Go 如何从yaml解组嵌入式结构
我想使用嵌入式结构来解组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
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`
标记有帮助吗?