Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menetapkan tag dalam golang
Dalam bahasa Go, kami boleh menggunakan struktur untuk menentukan jenis data gabungan. Tag ialah konsep unik dalam bahasa Go Ia membolehkan kami menambah maklumat meta pada medan struktur ini boleh diperolehi melalui refleksi semasa masa jalan.
Selepas medan ditakrifkan oleh struktur, kita boleh menggunakan rentetan yang disertakan dengan satu set simbol untuk mewakili teg medan ini. Ia boleh menjadi pengecam berasingan atau senarai yang dipisahkan oleh ruang . Sintaks Tag adalah seperti berikut:
type StructName struct { FieldName FieldType `TagKey:"TagValue"` }
Di sini, FieldName
mewakili nama medan yang diisytiharkan, FieldType
mewakili jenis medan dan TagKey
dan TagValue
mewakili kunci dan nilai Tag masing-masing. Jika terdapat berbilang pasangan nilai kunci, gunakan ruang untuk memisahkannya.
Dalam bahasa Go, kita boleh menggunakan refleksi untuk mendapatkan struktur dan medannya, dan kita boleh menggunakan kaedah jenis reflect.StructTag
untuk mendapatkan Teg medan. Contohnya adalah seperti berikut:
package main import ( "fmt" "reflect" ) type User struct { Name string `json:"name" log:"true"` Age int `json:"age" log:"false"` } func main() { user := User{ Name: "Alice", Age: 18, } t := reflect.TypeOf(user) for i := 0; i < t.NumField(); i++ { field := t.Field(i) fmt.Printf("%s: %s\n", field.Name, string(field.Tag)) fmt.Printf("json: %s\n", field.Tag.Get("json")) fmt.Printf("log: %s\n", field.Tag.Get("log")) } }
Dalam contoh di atas, kami mencipta struktur bernama Pengguna dan mentakrifkan dua medan Nama dan Umur di dalamnya, dan kemudian kami menggunakan refleksi untuk mendapatkan maklumat struktur dan mengeluarkan Tag setiap bidang. Apabila mengeluarkan Tag, kami menggunakan kaedah Tag.Get()
untuk mendapatkan nilai kunci Tag yang ditentukan. Hasil keluaran adalah seperti berikut:
Name: json:"name" log:"true" json: name log: true Age: json:"age" log:"false" json: age log: false
Seperti yang anda boleh lihat, apabila mengeluarkan maklumat Teg medan, kami menggunakan kaedah string()
untuk menukar maklumat taip reflect.StructTag
kepada rentetan untuk mendapatkan maklumat lanjut keluaran yang selesa.
Selain menggunakan Teg untuk menambah maklumat meta pada medan struktur, kami juga boleh menggunakan Teg pada jenis yang kami tentukan untuk memudahkan beberapa pemprosesan jenis ini. Penggunaan biasa ialah menggunakan Teg dalam pakej encoding
pada jenis tersuai untuk menentukan beberapa pilihan semasa bersiri, seperti menentukan jenis tarikh:
type Date struct { Year int `json:"year"` Month int `json:"month"` Day int `json:"day"` }
Di sini, kami Year
, The tiga medan Month
dan Day
masing-masing menggunakan kekunci json
dan nyatakan namanya apabila disirikan ke dalam data format JSON. Dengan cara ini, apabila kami menyerikan data jenis Tarikh ke dalam format JSON, pustaka JSON akan memproses data mengikut cara yang kami tentukan.
Atas ialah kandungan terperinci Bagaimana untuk menetapkan tag dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!