在下一个代码中,我尝试添加切片切片的元素,但是当Go使用参考时,如何通过使用b切片值来使用它?
package main
import (
"fmt"
)
func main() {
a := []int{1}
arr := [][]int{a}
b := []int{2}
arr = append(arr, b)
fmt.Println(arr)
b[0] = 3
arr = append(arr, b)
fmt.Println(arr)
}
我预计最后一个Println是[[1] [2] [3]],但它[[1] [3] [3]]。
答案 0 :(得分:3)
无法通过值"插入切片&#34 ;;你需要在插入之前制作切片的copy:
package main
import (
"fmt"
)
func copy_ints(c []int) []int {
s := make([]int, len(c))
copy(s, c)
return s
}
func main() {
a := []int{1}
arr := [][]int{copy_ints(a)}
b := []int{2}
arr = append(arr, copy_ints(b))
fmt.Println(arr)
b[0] = 3
arr = append(arr, copy_ints(b))
fmt.Println(arr)
}