我想主要针对DRY使用嵌入式结构来解组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
如何对嵌入的Person进行封送处理?
答案 0 :(得分:4)
您应该添加内嵌标记,例如:
type Employee struct {
Person `yaml:",inline"`
Number string
}
这将输出:
--- dump:
name: john
number: one
Here关于它的讨论
希望获得帮助