В 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_
Я не уверен, почему вы решили использовать массивы, но вgo, когда это возможно, вы должны использовать слайсы вместо массивов, так как они более гибкие, более чистые и менее подвержены ошибкам.
Вот реализация вместо слайсов:
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()
}
}
Обратите внимание, что вам не нужно менять логику, и вам больше не нужно нигде указывать размеры.