Двумерная матрица динамически - PullRequest
2 голосов
/ 13 марта 2019

У меня есть этот код, который дает мне ошибки:

package main

import (
    "fmt"
)

func main() {
        var cnt = make([][]string,0,10)
        for i := 0; i < 5; i++ {
             var tmp = make([]string,0,8)
             for c := 0 ; c < 5 ; c++ {
                 tmp = append(tmp,"Matias")
              }
              cnt= append(cnt,tmp...)
         }
    fmt.Println(cnt)
}

Это дает мне ошибку. По сути, мне нужно, чтобы срез был как можно более динамичным. Я не знаю, какой будет конечная длина в любом из двух измерений.

1 Ответ

3 голосов
/ 13 марта 2019

Ошибка компилятора на самом деле вводит в заблуждение - он должен заключить в кавычки, что вы используете tmp..., который имеет переменную строк - вместо этого он цитирует tmp, который имеет правильный тип []string, который можно использовать для добавления к cnt:

main.go: 14: 15: нельзя использовать tmp (type [] string) в качестве строки типа [] [] в append

В любом случае, используяtmp..., go превращает tmp из строки [] в отдельные строковые параметры.Фактически:

cnt = append(cnt, tmp[0], tmp[1], tmp[2], tmp[3], tmp[4])

И go не может добавить string к типу [][]string.

Измените строку на:

cnt = append(cnt, tmp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...