I'm wondering about the following behavior:
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!
Looks like append is doing something weird on the original slice pointer. Is this a bug or intended behavior? See also https://play.golang.org/p/EX3eqJz5Q8K