您可以设置多个(不同的)标签具有相同的值吗?

对于我的一些项目,我必须使用viper包来使用配置。该包要求您添加 来mapstructure:"fieldname"正确识别和设置配置对象的字段,但我还必须添加其他标签用于其他目的,导致如下所示:

type MyStruct struct {
    MyField string `mapstructure:"myField" json:"myField" yaml:"myField"`}

正如你所看到的,对我来说为每个标签编写是相当多余的tag:"myField",所以我想知道是否有任何方法可以将它们“捆绑”起来并减少冗长,就像这样mapstructure,json,yaml:"myField"

或者这根本不可能,您必须单独指定每个标签?


慕运维8079593
浏览 100回答 1
1回答

哔哔one

结构标签是任意字符串文字。存储在结构标记中的数据可能看起来像您想要的任何内容,但如果您不遵循约定,则必须编写自己的解析器/处理逻辑。如果遵循约定,您可以使用StructTag.Get()和StructTag.Lookup()轻松获取标签值。约定不支持“合并”多个标签,所以只需将它们全部写出来即可。约定,引用自:reflect.StructTag按照惯例,标签字符串是可选的空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 之外的非控制字符组成。每个值都用引号引起来使用 U+0022 '"' 字符和 Go 字符串文字语法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go