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

时间:2015-11-02 22:23:13

标签: go

我第一次尝试Go。在最后一个小时左右,我一直不知道为什么这段代码无效。

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

我希望它能打印出类似

的内容
[
  ["foo", "bar"]
  ["foo", "bar"]
]

但它拒绝使用消息row declared and not used进行编译。

显然,我错过了关于2d切片和range关键字的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:8)

cb(n//k,k)+[n%k]不是对def cb(n, k): if n < k: return [n] else: return cb(n//k, k) + [n%k] print(cb(22, 3)) 中值的引用,它是切片值的副本。该错误是因为您将新切片分配给row,但该值从未使用过。

这更有可能是你想要的:

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

grid