使用struct tag(golang)

翻譯自The way to go 10.4

在go語(yǔ)言的一個(gè)struct中,除了變量名和類(lèi)型之外,還可以選擇性的增加一些tag:tag可以在類(lèi)型的后面,用雙引號(hào)(double quote)或重音(backquote/grave accent)表示的字符串。這些符號(hào)能被用來(lái)做文檔或重要的標(biāo)簽。
tag里面的內(nèi)容在正常編程中沒(méi)有作用。只有在使用反射的時(shí)候才有作用。反射的包可以讓我們?cè)谶\(yùn)行時(shí)獲取到變量的類(lèi)型,屬性以及方法。比如reflect.TypeOf()就可以返回一個(gè)變量的類(lèi)型。如果是一個(gè)struct類(lèi)型,可以按照每一個(gè)變量索引,來(lái)查詢每一個(gè)的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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容