代码之家  ›  专栏  ›  技术社区  ›  user1050619

在果朗创建二维字符串数组

go
  •  0
  • user1050619  · 技术社区  · 6 年前

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

    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
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Adrian    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)
    
        2
  •  1
  •   cnst    5 年前

    [][]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)
        }
    …
    

    附加() 使()

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

    https://play.golang.org/p/iWgts-m7c4u