尝试使用append函数合并两个结构时出现错误:

./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"

我究竟做错了什么?

最佳答案

您的附加语法似乎错误。应该是这样
configs=append(configs,test)append为包含新结构的新 slice 提供功能,因此您将其放到旧的configs变量中。

来自golang游览:https://tour.golang.org/moretypes/15

评论后编辑:

我没有意识到您的configs并不是片。应该如下:
var configs []MapUsers
在类型之前应该有一个[],以表明它是一个 slice 。

关于go - 尝试附加相同类型的结构时,Go返回错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55934961/

10-10 15:08