Go 如何从yaml解组嵌入式结构

Go 如何从yaml解组嵌入式结构,go,yaml,unmarshalling,Go,Yaml,Unmarshalling,我想使用嵌入式结构来解组yaml,主要用于: package main import ( "fmt" "log" "gopkg.in/yaml.v2" ) type Person struct { Name string } type Employee struct { Person Number string } func (c *Employee) Dump() { d, err := yaml.Marshal(c) i

我想使用嵌入式结构来解组yaml,主要用于:

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

type Person struct {
    Name string
}

type Employee struct {
    Person
    Number string
}

func (c *Employee) Dump() {
    d, err := yaml.Marshal(c)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("--- dump:\n%s\n\n", string(d))
}

func main() {
    s := `
name: john
number: one
`

    c := &Employee{}
    err := yaml.Unmarshal([]byte(s), c)
    if err != nil {
        log.Fatalf("Unmarshal: %v", err)
    }

    c.Dump()
}
这导致:

--- dump:
person:
  name: ""
number: one

如何才能解除嵌入式人员的签名?

您应该添加内联标记,例如:

type Employee struct {
    Person `yaml:",inline"`
    Number string
}
这将输出:

--- dump:
name: john
number: one
关于它的讨论

希望此帮助

Employee
struct声明中的
Person
字段中添加
`yaml:,inline`
标记有帮助吗?