Go語言中的struct tag


有時在Go的結構體定義時會看到這樣的形式:

type User struct {
UserId int `json:"user_id" bson:"b_user_id"`
UserName string `json:"user_name" bson:"b_user_name"`
}
注意上述紅色部分,這就稱之為struct tag 。個人理解struct tag的作用類似於Java的注解的作用,在Go語言中可以通過反射機制在運行時動態獲取到struct的tag來實現一些特定功能。
下面列出相關參考代碼:
package main

import (
    "encoding/json"
    "fmt"
    "reflect"
)

type User struct {
    UserId   int    `json:"user_id" bson:"b_user_id"`
    UserName string `json:"user_name" bson:"b_user_name"`
}

func main()  {

    u := &User{UserId: 1, UserName: "tony"}
    j, _ := json.Marshal(u)
    fmt.Println(string(j))

    // 獲取tag中的內容
    t := reflect.TypeOf(u)
    field := t.Elem().Field(0)
    fmt.Println(field.Tag.Get("json"))
    // 輸出:user_id
    fmt.Println(field.Tag.Get("bson"))
}

 


免責聲明!

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



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