2 回答
TA贡献1824条经验 获得超6个赞
你有一片切片,外层切片nil直到它被初始化:
matrix := make([][]string, 1)
matrix[0] = append(matrix[0],'cat')
fmt.Println(matrix)
或者:
var matrix [][]string
matrix = append(matrix, []string{"cat"})
fmt.Println(matrix)
或者:
var matrix [][]string
var row []string
row = append(row, "cat")
matrix = append(matrix, row)
TA贡献2011条经验 获得超2个赞
用 Go 做二维数组的问题是你必须单独初始化每个部分,例如,如果你有一个[][]bool,你必须[]([]bool)先分配,然后再分配个人[]bool;无论您是否正在使用make()或append()执行分配,这都是相同的逻辑。
在你的例子中,matrix[0]仅仅 之后还不存在var matrix [][]string,因此你得到了index out of range错误。
例如,下面的代码将根据不同类型的现有切片的大小创建另一个切片:
func solve(board [][]rune, …) {
x := len(board)
y := len(board[0])
visited := make([][]bool, x)
for i := range visited {
visited[i] = make([]bool, y)
}
…
如果你只是想根据你拥有的静态数组初始化切片,你可以直接这样做,甚至不必使用append()or make():
package main
import (
"fmt"
)
func main() {
matrix := [][]string{{"cat", "cat", "cat"}, {"dog", "dog"}}
fmt.Println(matrix)
}
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报