## example.yaml
locationSection:
firstLoc: Canada
secondLoc: Korea
thirdLoc: Italy
numberSection:
person1: 12345
person2: 98765
person3: 56789
### this is not an exact go code but just an example...
locationSectionStructure
...
data, err := os.ReadFile(yamlFileFullPath)
if err != nil {
fmt.Printf("[I/O Error] Falied to read this file from os.ReadFile: %s", cfgFileFullPath)
panic(err)
}
if err := yaml.Unmarshal(data, exampleNode); err != nil {
fmt.Printf("[Unmarshal Error] Failed to unmarshal into a yaml Node")
panic(err)
}
...
if err := exampleNode.Decode(locationSectionNode); err != nil {
...
我使用的是golang yaml.v3包中的Node类型。我的目标是创建一个exampleNode
,它表示来自一个示例.yaml文件的数据。此外,我打算基于exampleNode
的结构生成额外的节点,即locationSectionNode
和numberSectionNode
。
有没有一个简单的方法来实现这一点?或者我是否错误地使用了Node结构来实现此目的?
谢谢你。
1条答案
按热度按时间gzjq41n41#
我不敢肯定是否完全理解你的要求。顺便说一句,如果我做得很好,下面的代码也应该对你有用。
yaml
文件我按照你的要求使用了一个名为
example.yaml
的文件。内容如下:我本来可以用另一种方式写的,但也许我没有很好地理解你的想法。无论如何,让我们切换到实际读取和解析它的代码。
main.go
文件main.go
文件的内容如下:这里重要的部分是我如何定义要使用的结构。我定义了一个名为
exampleNode
的通用结构体来 Package 两个内部对象。然后,我定义了两个结构体LocationSection
和NumberSection
。请注意在
unmarshal
阶段使用的YAML标记注解的用法。如果没有它们,您就不能解编组和填充exampleNode
结构。代码的另一部分应该非常简单。
请让我知道,如果这个代码解决了你的问题,或者你需要其他帮助,谢谢!