1 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
在 go 中,數(shù)組有固定的大小,與切片相反,所以這里你需要指定數(shù)組的大小作為參數(shù),否則你會(huì)得到這個(gè)錯(cuò)誤:
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()
? ? }
}
產(chǎn)出
O_O
XO_
我不確定您為什么決定使用數(shù)組,但總的來(lái)說(shuō),只要有可能,您應(yīng)該更喜歡使用切片而不是數(shù)組,因?yàn)樗鼈兏`活、更簡(jiǎn)潔且更不容易出錯(cuò)。
這是使用切片的實(shí)現(xiàn):
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()
? ? }
}
請(qǐng)注意,您不需要更改邏輯,也不需要再在任何地方指定大小。
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)