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 關注
- 139 瀏覽
添加回答
舉報