范围关键字和Go中的2d切片

范围关键字和Go中的2d切片,go,Go,我第一次尝试围棋。在过去一个小时左右的时间里,我一直不明白为什么这段代码不起作用 grid := make([][]string, 2) for _, row := range grid { row = []string{"foo", "bar"} } fmt.Println(grid) 我希望它能打印出像这样的东西 [ ["foo", "bar"] ["foo", "bar"] ] 但它拒绝编译声明了且未使用的消息行 显然,我在2d切片和range关键字方面遗漏了一些东西。

我第一次尝试围棋。在过去一个小时左右的时间里,我一直不明白为什么这段代码不起作用

grid := make([][]string, 2)
for _, row := range grid {
    row = []string{"foo", "bar"}
}
fmt.Println(grid)
我希望它能打印出像这样的东西

[
  ["foo", "bar"]
  ["foo", "bar"]
]
但它拒绝编译声明了且未使用的消息


显然,我在2d切片和
range
关键字方面遗漏了一些东西。有什么想法吗?

不是对
网格
中的值的引用,它是切片值的副本。错误是因为您为
分配了一个新的切片,但从未使用该值

这更可能是您想要的:


不是对
网格
中的值的引用,而是切片值的副本。错误是因为您为
分配了一个新的切片,但从未使用该值

这更可能是您想要的:

grid := make([][]string, 2)
for i := range grid {
    grid[i] = []string{"foo", "bar"}
}
fmt.Println(grid)