在下一个代码中,我试图添加一个切片的元素,但是当 Go 使用引用时,我如何通过按值使用 b 切片来使用它?package mainimport ( "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]]。
1 回答
弑天下
TA贡献1818条经验 获得超8个赞
无法“按值”插入切片;您需要在插入之前制作切片的副本:
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)
}
https://play.golang.org/p/Tds5FGj3nf
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消