Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menetapkan tag dalam golang

Bagaimana untuk menetapkan tag dalam golang

PHPz
PHPzasal
2023-04-11 09:13:591288semak imbas

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn