Go 結構體標籤詳解
Go 結構體標籤詳解
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/benben_2015/article/details/79807792
Go結構體標籤
結構體的欄位除了名字和型別外,還可以有一個可選的標籤(tag):它是一個附屬於欄位的字串,可以是文件或其他的重要標記。比如在我們解析json或生成json檔案時,常用到encoding/json包,它提供一些預設標籤,例如:omitempty
標籤可以在序列化的時候忽略0值或者空值。而-
標籤的作用是不進行序列化,其效果和和直接將結構體中的欄位寫成小寫的效果一樣。
type Info struct {
Name string
Age int `json:"age,omitempty"`
Sex string
}
在序列化和反序列化的時候,也支援型別轉化等操作。如
type Info struct {
Name string
Age int `json:"age,string"`
//這樣生成的json物件中,age就為字串
Sex string
}
現在來了解下如何設定自定義的標籤,以及如何像官方包一樣,可以通過標籤,對欄位進行自定義處理。要實現這些,我們要用到reflect
包。
package main
import (
"fmt"
"reflect"
)
const tagName = "Testing"
type Info struct {
Name string `Testing:"-"`
Age int `Testing:"age,min=17,max=60"`
Sex string `Testing:"sex,required"`
}
func main() {
info := Info{
Name: "benben",
Age: 23,
Sex: "male",
}
//通過反射,我們獲取變數的動態型別
t := reflect.TypeOf(info)
fmt.Println("Type:", t.Name())
fmt.Println("Kind:", t.Kind())
for i := 0; i < t.NumField(); i++ {
field := t.Field(i) //獲取結構體的每一個欄位
tag := field.Tag.Get(tagName)
fmt.Printf("%d. %v (%v), tag: '%v'\n", i+1, field.Name, field.Type.Name(), tag)
}
}
這些標籤也起到配置資訊的作用,不過在實際工作中,為了程式碼更直觀,這些應該放到配置資訊裡。
相關文章
- 常用的HTML標籤詳解與總結HTML
- 詳解 Go 空結構體的 3 種使用場景Go結構體
- HTML簡介,結構,標籤以及標籤語義HTML
- POM.xml 標籤詳解XML
- HTML常見標籤詳解HTML
- Git tag標籤用法詳解Git
- Go結構體標籤表示式v1.0釋出,引數校驗殺手鐗Go結構體
- Go 結構體Go結構體
- Maven中optional標籤詳解(轉)Maven
- dedecms模板標籤dede:channelartlist詳解
- Go標準庫:Go template用法詳解Go
- HTML5常見標籤詳解HTML
- JVM之記憶體結構詳解JVM記憶體
- c 結構體記憶體對齊詳解結構體記憶體
- HTML表單標籤詳解:如何用HTML標籤打造互動網頁?HTML網頁
- Golang中struct結構標籤(Tag)的使用GolangStruct
- HTML常用基礎標籤:圖片與超連結標籤全解!HTML
- JavaScript物件導向修改標籤頁詳解JavaScript物件
- 標籤實現預載入功能詳解
- maven中的scope標籤類別詳解Maven
- Go 語言 結構體Go結構體
- RNN 結構詳解RNN
- script標籤的defer和async屬性詳解
- Html網頁中meta標籤及用法詳解HTML網頁
- <link>標籤實現預載入功能詳解
- Tungsten Fabric架構解析丨詳解vRouter體系結構架構VR
- Go 語言 結構體連結串列Go結構體
- 【PG體系結構】Postgresql 配置檔案詳解SQL
- GO語言————5.6 標籤與gotoGo
- Tomcat結構原理詳解Tomcat
- Go語言入門系列(五)之指標和結構體的使用Go指標結構體
- 一文詳解阿里雲可觀測體系下標籤最佳實踐阿里
- Java Servlet詳解(體系結構+註解配置+生命週期)JavaServlet
- TOML-to-Go : 幫你快速生成 Go 結構體TOMLGo結構體
- Go 語言 結構體和方法Go結構體
- GO 學習筆記->結構體Go筆記結構體
- go 結構體 (struct) 和方法 (method)Go結構體Struct
- go語言之結構體和方法Go結構體