go - 如何从 yaml 中解组嵌入式结构
问题描述
我想使用嵌入式结构解组 yaml,主要用于 DRY:
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 如何解组?
解决方案
您应该添加内联标签,例如:
type Employee struct {
Person `yaml:",inline"`
Number string
}
这将输出:
--- dump:
name: john
number: one
这里有一个关于它的讨论
希望这有帮助
推荐阅读
- python - 在 Python 中,如何用字符串切片?
- azure-powershell - 在 Azure powershell 中获取 webapp 的受限 ip
- r - 匹配数据框和向量的行时如何提取列索引
- google-cloud-platform - 无法 VNC 到 GCP Linux 虚拟机
- javascript - scrollIntoView() 在 IOS Safari 和 chrome 上不起作用?
- checkbox - 我不需要复选框的可点击标签
- c# - C# - 发生异常时,希望保留参数对象的原始状态以及最近的任何更改
- javascript - How to pass a javascript return value to spring path variable
- javascript - React Native Hooks:无法在 useEffect 函数的 return() 中显示值
- pandas - 使用 beautifulsoup 将 selenium html 表放入 pandas 数据框