对于我的一些项目,我必须使用viper包来使用配置。该包要求您添加 来mapstructure:"fieldname"正确识别和设置配置对象的字段,但我还必须添加其他标签用于其他目的,导致如下所示:type MyStruct struct {
MyField string `mapstructure:"myField" json:"myField" yaml:"myField"`}正如你所看到的,对我来说为每个标签编写是相当多余的tag:"myField",所以我想知道是否有任何方法可以将它们“捆绑”起来并减少冗长,就像这样mapstructure,json,yaml:"myField"或者这根本不可能,您必须单独指定每个标签?
1 回答
哔哔one
TA贡献1854条经验 获得超8个赞
结构标签是任意字符串文字。存储在结构标记中的数据可能看起来像您想要的任何内容,但如果您不遵循约定,则必须编写自己的解析器/处理逻辑。如果遵循约定,您可以使用StructTag.Get()
和StructTag.Lookup()
轻松获取标签值。
约定不支持“合并”多个标签,所以只需将它们全部写出来即可。
约定,引用自:reflect.StructTag
按照惯例,标签字符串是可选的空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 之外的非控制字符组成。每个值都用引号引起来使用 U+0022 '"' 字符和 Go 字符串文字语法。
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消