使用struct tag(golang)

翻译自The way to go 10.4

在go语言的一个struct中,除了变量名和类型之外,还可以选择性的增加一些tag:tag可以在类型的后面,用双引号(double quote)或重音(backquote/grave accent)表示的字符串。这些符号能被用来做文档或重要的标签。
tag里面的内容在正常编程中没有作用。只有在使用反射的时候才有作用。反射的包可以让我们在运行时获取到变量的类型,属性以及方法。比如reflect.TypeOf()就可以返回一个变量的类型。如果是一个struct类型,可以按照每一个变量索引,来查询每一个的tag。

    package main

    import (
        "fmt"
        "reflect"
    )

    type TagType struct {
        field1 bool    "An important answer"
        field2 string  "The name of the thing"
        field3 int     `how much there are`
    }

    func main() {
        tt := TagType{true, "Barak Obama", 1}
        var reflectType reflect.Type = reflect.TypeOf(tt)
        var ixField reflect.StructField
        for i := 0; i < 3; i++ {
            ixField = reflectType.Field(i)
            fmt.Printf("%s\n", ixField.Tag)
        }   
    }

输出

An important answer
The name of the thing
how much there are
    原文作者:祖祖
    原文地址: https://www.jianshu.com/p/d396f86c8583
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞