[Go] go語言中的結構體標簽


當在進行json的序列化時經常用到,結構體標簽對於go本身來說就是注釋

但是可以通過反射獲取到標簽的內容,所以很多包都可以有自己的作用

具體原理就是反射實現

 

package v2

type VisitorLoginForm struct {
    VisitorId string `form:"visitor_id" json:"visitor_id" uri:"visitor_id" xml:"visitor_id"`
    Refer     string `form:"refer" json:"refer" uri:"refer" xml:"refer"`
    ReferUrl  string `form:"refer_url" json:"refer" uri:"refer" xml:"refer"`
    Url       string `form:"url" json:"url" uri:"url" xml:"url"`
    ToId      string `form:"to_id" json:"to_id" uri:"to_id" xml:"to_id"  binding:"required"`
    EntId     string `form:"ent_id" json:"ent_id" uri:"ent_id" xml:"ent_id" binding:"required"`
    Avator    string `form:"avator" json:"avator" uri:"avator" xml:"avator"`
    UserAgent string `form:"user_agent" json:"user_agent" uri:"user_agent" xml:"user_agent"`
}
package v2

import (
    "fmt"
    "reflect"
    "testing"
)

func TestStructTag(t *testing.T) {
    form := VisitorLoginForm{
        VisitorId: "121212",
        ReferUrl:  "http://",
    }
    formRef := reflect.TypeOf(form)
    fmt.Println("Type:", formRef.Name())
    fmt.Println("Kind:", formRef.Kind())
    for i := 0; i < formRef.NumField(); i++ {
        field := formRef.Field(i)
        tag := field.Tag.Get("json")
        fmt.Printf("%d. %v (%v), tag: '%v'\n", i+1, field.Name, field.Type.Name(), tag)
    }
}

 

可以獲取到字段內容,標簽內容

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM