Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mendapatkan Nama Medan Struct Menggunakan Go Reflection?

Bagaimanakah Saya Boleh Mendapatkan Nama Medan Struct Menggunakan Go Reflection?

DDD
Lepaskan: 2024-12-02 19:13:13
asal
651 orang telah melayarinya

How Can I Retrieve the Name of a Struct Field Using Go Reflection?

Mengambil Nama Medan Struktur dengan Refleksi

Apabila menggunakan pakej pantulan dalam Go, anda boleh memanipulasi struktur dan medan secara dinamik. Walau bagaimanapun, isu timbul apabila cuba mencetak nama medan tertentu menggunakan pantulan.

Pertimbangkan coretan kod berikut:

type A struct {
    Foo string
}

func (a *A) PrintFoo() {
    fmt.Println("Foo value is " + a.Foo)
}

func main() {
    a := &A{Foo: "afoo"}
    val := reflect.Indirect(reflect.ValueOf(a))
    fmt.Println(val.Field(0).Type().Name()) // Prints "string"
}
Salin selepas log masuk

Dalam contoh ini, matlamatnya adalah untuk mencetak "Foo ", tetapi ia mencetak "rentetan" sebaliknya. Ini kerana kaedah Field(0) mengembalikan nilai reflect.StructField, yang mengandungi maklumat tentang jenis medan, bukan namanya.

Untuk mendapatkan semula nama medan, anda perlu menggunakan Type() dan kaedah Field() pada reflect.Type value:

fmt.Println(val.Field(0).Type().Field(0).Name) // Prints "Foo"
Salin selepas log masuk

Kaedah Field(0) pada reflect.Type value mengembalikan a reflect.StructField yang mewakili medan pertama struct. Medan Nama bagi mencerminkan ini.StructField mengandungi nama medan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Medan Struct Menggunakan Go Reflection?. 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