尝试使用附加功能合并两个结构时出现错误:
./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"
我在做什么错了?
答案 0 :(得分:2)
您的附加语法似乎错误。应该是这样的。
configs=append(configs,test)
append
对包含新结构的新切片起作用,因此您将其放入旧的configs
变量中。
在golang游览中:https://tour.golang.org/moretypes/15
评论后编辑:
我没有意识到您的configs
不是一片片。应该如下:
var configs []MapUsers
在类型之前应该有一个[]
,以表明它是一个切片。