I am getting error trying to merge two structures using append function:
./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
Here is the code.
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
", configs)
}
Here is the data:
- userarn: "aaaaaaaaaaaa"
username: "bbbbbbbbbb"
groups:
- "ccccccccccc"
What am I doing wrong?
Your append syntax seems wrong. It should be like this.
configs=append(configs,test)
append
function a new slice including your new struct, so you take it and put to your old configs
variable.
From golang tour: https://tour.golang.org/moretypes/15
EDIT after comment:
I didn't realize that your configs
was not a slice. It should be as follows:
var configs []MapUsers
There should be a []
before the type to show that it's a slice.