<分区>
我想知道以下行为:
sl1 := []int{0, 1, 2, 3, 4, 5}
fmt.Printf("sl1: %v\n", sl1)
//Prints sl1: [0 1 2 3 4 5]
idx := 3
sl2 := append(sl1[:idx], sl1[idx+1:]...)
fmt.Printf("sl1: %v\n", sl1)
//Prints sl1: [0 1 2 4 5 5] -> strange!
fmt.Printf("sl2: %v\n", sl2)
//Prints sl2: [0 1 2 4 5] -> expected!
看起来 append 在原始 slice 指针上做了一些奇怪的事情。 这是错误还是预期的行为?另见 https://play.golang.org/p/EX3eqJz5Q8K