登录
首页 >  Golang >  Go问答

可以将多个标签设置为具有相同的值吗?

来源:stackoverflow

时间:2024-02-23 08:00:26 246浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《可以将多个标签设置为具有相同的值吗?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

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

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

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

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


解决方案


Struct tags 是任意的 string literals。存储在结构标记中的数据可能看起来像您想要的任何内容,但如果您不遵循约定,则必须编写自己的解析器/处理逻辑。如果您遵循约定,您可以使用 StructTag.Get()StructTag.Lookup() 轻松获取标签值。

约定不支持“合并”多个标签,所以只需将它们全部写出来即可。

约定,引自 reflect.StructTag

按照惯例,标记字符串是可选的空格分隔键:“值”对的串联。每个键都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 之外的非控制字符组成。每个值都用引号引起来使用 U+0022 '"' 字符和 Go 字符串文字语法。

查看相关问题:What are the use(s) for tags in Go?

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《可以将多个标签设置为具有相同的值吗?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>