问题描述
我学习围棋和玩棋子,但我有一个问题
我有一个带有&q;的默认矩阵,但当我尝试将位置0,0更改为符号时,所有n,0位置都有&q;#&q;,换句话说,我从以下位置开始:
[. . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
使用此函数修改0,0位置:
func drawSym(table *[][]string) {
(*table)[0][0] = "#"
}
我得到
[# . . . .]
[# . . . .]
[# . . . .]
[# . . . .]
[# . . . .]
当我需要这样的矩阵时
[# . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
[. . . . .]
程序的完整代码在操场https://play.golang.org/p/xvkRhmNvdIP
推荐答案
如果矩阵大小不变,则不需要传入指向您的切片(或切片的切片)的指针。
这样,您可以简化表的创建/初始化,如下所示:
func createTable(size int) (table [][]string) {
table = make([][]string, size)
for i := 0; i < size; i++ {
table[i] = make([]string, size) // create a new row per iteration
for j := 0; j < size; j++ {
table[i][j] = "."
}
}
return
}
table := createTable(5)
draw
和print
函数也得到了简化,因为它们也不需要切片指针:
https://play.golang.org/p/KmwynzUj0I-