range关键字和Go中的2d切片



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

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

我希望它能打印出类似的东西

[
  ["foo", "bar"]
  ["foo", "bar"]
]

但是它拒绝用消息CCD_ 1进行编译。

很明显,我遗漏了一些关于2d切片和range关键字的内容。有什么想法吗?

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

这很可能是你想要的:

http://play.golang.org/p/86yHqw_JX-

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

最新更新