Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在golang中创建二维字符串数组_Go - Fatal编程技术网

在golang中创建二维字符串数组

在golang中创建二维字符串数组,go,Go,我需要创建一个二维字符串数组,如下所示- matrix = [['cat,'cat','cat'],['dog','dog']] 代码:- package main import ( "fmt" ) func main() { { // using append var matrix [][]string matrix[0] = append(matrix[0],'cat') fmt.Println(matrix) } } 错误:

我需要创建一个二维字符串数组,如下所示-

matrix = [['cat,'cat','cat'],['dog','dog']]
代码:-

package main

import (
    "fmt"
)

func main() {
    { // using append

    var matrix [][]string
    matrix[0] = append(matrix[0],'cat')
        fmt.Println(matrix)
    }
}
错误:-

panic: runtime error: index out of range

goroutine 1 [running]:
main.main()
    /tmp/sandbox863026592/main.go:11 +0x20

您有一个切片,外部切片在初始化之前为
nil

matrix := make([][]string, 1)
matrix[0] = append(matrix[0],'cat')
fmt.Println(matrix)
或:

或:


使用Go进行二维数组的问题是,您必须单独初始化每个零件,例如,如果您有
[]bool
,则必须先分配
[]([]bool)
,然后再分配单个
[]bool
;无论是使用
make()
还是
append()
执行分配,这都是相同的逻辑

在您的示例中,
矩阵[0]
在一个
var矩阵[][]字符串之后还不存在,因此您得到的
索引超出了范围
错误

例如,下面的代码将根据不同类型的现有切片的大小创建另一个切片:

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()
make()


感谢的可能重复,如何将相同元素添加到2位置(对于最后一个选项)。追加(矩阵,行)默认情况下添加到第一个元素…@user1050619首先初始化外部矩阵(如第一个示例中所示)。
append(矩阵,行)
不添加到第一个元素,而是将行添加到矩阵。
var matrix [][]string
var row []string
row = append(row, "cat")
matrix = append(matrix, row)
func solve(board [][]rune, …) {

    x := len(board)
    y := len(board[0])
    visited := make([][]bool, x)
    for i := range visited {
        visited[i] = make([]bool, y)
    }
…
package main

import (
    "fmt"
)

func main() {
    matrix := [][]string{{"cat", "cat", "cat"}, {"dog", "dog"}}
    fmt.Println(matrix)
}