dictionary - 是否可以在包含地图名称的同时编组一个 go 结构?
问题描述
假设我有一个这样设置的 go 结构:
type TestStruct struct {
ID string
ConfigTest map[string]Object
}
对象内部有 yaml/json 标签,用于编组(然后保存到文件中),如下所示:
type Object struct {
ID string `yaml:"ID"`
Value float64 `yaml:"Value"`
}
因此,当我编组TestStruct.ConfigTest
, 并将其保存到文件中时,ioutil.WriteFile()
我得到如下输出:
obj1:
ID: "Hello"
Value: 1.2
obj2:
ID: "World"
Value: 3.4
...(etc)
但我真正想要的是编组,并像这样保存文件:
Objects:
obj1:
ID: "Hello"
Value: 1.2
obj2:
ID: "World"
Value: 3.4
...(etc)
这可能吗?
解决方案
您有两个基本选择:
重用TestStruct
:
更改TestStruct
以在字段上添加适当的标签:一个跳过编组 ID,另一个将所需的名称赋予ConfigTest
.
type TestStruct struct {
ID string `yaml:"-"`
ConfigTest map[string]Object `yaml:"Objects"`
}
使用包装结构:
如果您不能或不想修改TestStruct
(即:因为它已经在其他地方封送),您可以使用包装器结构:
type WrapperStruct struct {
ConfigTest map[string]Object `yaml:"Objects"`
}
并编组您的新包装器结构而不是MyStruct
.
推荐阅读
- matlab - 在 MATLAB 中使用三角函数最小化方程和约束
- latex - 如何将乳胶独立包与knitr一起使用?
- sql - 在 oracle 中更改表添加 guid 列
- javascript - React — componentDidUpdate 作为一个承诺/回调。是否可以?
- swift - KVO Swift:newValue 始终为 nil
- c# - Xamarin - 平移和缩放图形视图
- nginx - 无法使用 nginx 访问入口子路径
- typescript - 我如何循环遍历 ionic v3 中的数组中的对象
- javascript - CompileError:AsyncCompile:Wasm 解码失败:预期的魔术词
- powershell - 如何将 Invoke-RestMethod 的数据结果转换为 CSV 文件?