Go возвращает ошибку при попытке добавить структуру того же типа - PullRequest
0 голосов
/ 01 мая 2019

Я получаю сообщение об ошибке при попытке объединить две структуры с помощью функции добавления:

./test.go:33:18: cannot use configs (type MapUsers) as type struct { Userarn string "yaml:\"userarn\""; Username string "yaml:\"username\""; Groups []string "yaml:\"groups\"" } in append

Вот код.

package main

import (
  "fmt"
  "gopkg.in/yaml.v2"
  "io/ioutil"
  "os"
)



type MapUsers []struct {
    Userarn  string
    Username string
    Groups   []string 
}


func main() {
    filename := os.Args[1]
    var configs MapUsers

    source, err := ioutil.ReadFile(filename)
    if err != nil {
        panic(err)
    }
    err = yaml.Unmarshal(source, &configs)
    if err != nil {
        panic(err)
    }

    configs = append(configs, configs)
    fmt.Printf("Value: %#v\n", configs)


}

Вот данные:

- userarn: "aaaaaaaaaaaa"
  username: "bbbbbbbbbb"
  groups:
    - "ccccccccccc"

Что я делаю не так?

1 Ответ

2 голосов
/ 01 мая 2019

Ваш синтаксис добавления кажется неправильным.Это должно быть так.

configs=append(configs,test)

append функционирует новый срез, включая вашу новую структуру, поэтому вы берете его и помещаете в старую переменную configs.

Из тура по Голангу: https://tour.golang.org/moretypes/15

РЕДАКТИРОВАТЬ после комментария:

Я не осознавал, что ваш configs не был срезом.Это должно быть следующим образом:

var configs []MapUsers

Перед типом должно быть [], чтобы показать, что это срез.

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