2015-11-02 47 views
1

我第一次嘗試我的手在圍棋。在過去的一個小時左右,我一直在爲這個代碼不工作而感到不知所措。圍棋關鍵字和二維切片

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關鍵字的內容。有任何想法嗎?

回答

9

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)