提问人:S.Ye 提问时间:2/2/2021 最后编辑:Jonathan HallS.Ye 更新时间:2/3/2021 访问量:73
如何传递 [][]int 变量 [closed]
How to pass a [][]int variable [closed]
问:
我们知道 Go 是按值传递的,切片是指针类型,那么 [][]int 呢? 我收到了这个代码
func add(nums [][]int) {
nums = append(nums, []int{1,2,3})
}
在此功能之后,nums 似乎没有改变。我对 [][]int 感到困惑。
答:
1赞
Coconut
2/3/2021
#1
代码将值分配给名为 的局部变量。nums
由于 是不是引用的局部变量,因此无法从函数范围之外访问它。nums
add
如果要更改函数外部的值,它必须是指针类型。nums
您必须先取消引用它,然后分配要分配给它的值。
func add(nums *[][]int) {
t := append(*nums, []int{1,2,3})
*nums = &t
}
评论
[][]int
只不过是一片.这样对待它。您必须返回结果并将其分配给原始切片。[]int
append
append
realloc
append
num
num