【发布时间】:2018-09-18 22:29:21
【问题描述】:
我无法在 func 中传递二维字符串数组的切片:这是我的游乐场
package main
import (
"fmt"
)
func main() {
board := [2][3]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()
}
}
上面写着cannot use board[:][:] (type [][3]string) as type [][]string in argument to printBoard
我没能纠正它 printBoard(board[:][:]).
我尝试删除调用中的一个/两个分号,但也没有用。 如果可能,我不想指定任何长度
【问题讨论】:
-
认为
board[:][:]与board[:]或board[:][:][:]相同 -
你为什么不将 board 变量声明为一个 slice 开始呢?在 golang 中,数组很少使用。我们倾向于在 99% 的情况下更喜欢切片,以免它过于具体。
-
其实只是因为我习惯了Java/Javascript,slice是不存在的。
标签: go