Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengakses Tag Medan Struct Menggunakan Pakej Reflect Go?

Bagaimana untuk Mengakses Tag Medan Struct Menggunakan Pakej Reflect Go?

DDD
Lepaskan: 2024-12-16 01:02:09
asal
964 orang telah melayarinya

How to Access Struct Field Tags Using Go's Reflect Package?

Mengakses Teg Medan Struktur melalui Pakej Reflect Go

Merefleksikan medan struct dan mendapatkan semula nilai tegnya boleh dicapai menggunakan pakej reflect Go. Pertimbangkan contoh berikut:

type User struct {
    name    string `json:"name-field"`
    age     int
}

// ...

user := &User{"John Doe The Fourth", 20}
getStructTag(user.name) // How to obtain the tag value here?
Salin selepas log masuk

PENYELESAIAN

Meluluskan keseluruhan struct ke getStructTag tidak diperlukan. Sebaliknya, kita boleh menggunakan fungsi reflect.TypeOf untuk mendapatkan jenis struct dan kaedah Elem untuk mendapatkan semula jenis nilai asas. Kami kemudiannya menggunakan FieldByName untuk mengakses medan struct yang dikehendaki.

field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
    // Handle error
}

tag := string(field.Tag)
Salin selepas log masuk

Dalam kes ini, kami menggunakan Elem kerana pengguna ialah penunjuk kepada struct. Dengan mengakses medan FieldByName, kami boleh terus mendapatkan reflect.StructField yang sepadan dengan medan "nama". Atribut Tag bagi medan yang diperolehi menyediakan akses kepada nilai teg.

DEMONSTRASI

Contoh interaktif teknik ini boleh didapati di pautan berikut: [Merenungkan tentang Teg Medan Struktur](https://play.golang.org/p/_M9Q-r1fuzq).

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Tag Medan Struct Menggunakan Pakej Reflect Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan