尝试附加相同类型的结构时,Go返回错误

时间:2019-05-01 10:42:40

标签: go yaml

尝试使用附加功能合并两个结构时出现错误:

./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 个答案:

答案 0 :(得分:2)

您的附加语法似乎错误。应该是这样的。

configs=append(configs,test)

append对包含新结构的新切片起作用,因此您将其放入旧的configs变量中。

在golang游览中:https://tour.golang.org/moretypes/15

评论后编辑:

我没有意识到您的configs不是一片片。应该如下:

var configs []MapUsers

在类型之前应该有一个[],以表明它是一个切片。