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?
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)
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!