我无法在func中传递2d字符串数组的一部分:这是我的游乐场
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 [:] [:])。
我尝试通过删除呼叫中的一个/两个分号来进行操作,但均不起作用。 我不想指定任何长度
答案 0 :(得分:1)
在进行中,数组具有与切片相反的固定大小,因此在这里您需要指定数组的大小作为参数,否则会出现此错误:
prog.go:13:12: cannot use board (type [2][3]string) as type [][]string in argument to printBoard
这里是papers:
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()
}
}
请注意,您无需更改逻辑,也无需在任何地方指定大小。