1 回答
TA贡献1886条经验 获得超2个赞
在 go 中,数组有固定的大小,与切片相反,所以这里你需要指定数组的大小作为参数,否则你会得到这个错误:
prog.go:13:12: cannot use board (type [2][3]string) as type [][]string in argument to printBoard
这是固定的:
package main
import (
"fmt"
)
func main() {
board := [2][3]string{
{"O", "_", "O"},
{"X", "O", "_"},
}
printBoard(board)
}
func printBoard(board [2][3]string){
for _, line := range board {
for _, cell := range line {
fmt.Printf("%s", cell)
}
fmt.Println()
}
}
产出
O_O
XO_
我不确定您为什么决定使用数组,但总的来说,只要有可能,您应该更喜欢使用切片而不是数组,因为它们更灵活、更简洁且更不容易出错。
这是使用切片的实现:
package main
import (
"fmt"
)
func main() {
board := [][]string{
{"O", "_", "O"},
{"X", "O", "_"},
}
printBoard(board)
}
func printBoard(board [][]string){
for _, line := range board {
for _, cell := range line {
fmt.Printf("%s", cell)
}
fmt.Println()
}
}
请注意,您不需要更改逻辑,也不需要再在任何地方指定大小。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报