func (Nilai) FieldByName(rentetan nama) mencerminkan.Nilai
package main import ( "fmt" "reflect" ) type Person struct { Name string Age int } func main() { p := Person{ Name: "John", Age: 30, } // 获取Person对象的reflect.Value对象 v := reflect.ValueOf(p) // 使用FieldByName函数获取"Name"字段的reflect.Value对象 nameField := v.FieldByName("Name") // 打印字段类型和字段值 fmt.Println("Name字段的类型:", nameField.Type()) fmt.Println("Name字段的值:", nameField.Interface()) // 使用FieldByName函数获取"Age"字段的reflect.Value对象 ageField := v.FieldByName("Age") // 打印字段类型和字段值 fmt.Println("Age字段的类型:", ageField.Type()) fmt.Println("Age字段的值:", ageField.Interface()) }
Jalankan kod ini, outputnya adalah seperti berikut:
Name字段的类型: string Name字段的值: John Age字段的类型: int Age字段的值: 30
Seperti yang anda boleh lihat daripada kod di atas, kami mula-mula menggunakan fungsi reflect.ValueOf untuk menukar objek Person menjadi pantulan.Nilai objek. Kemudian, gunakan fungsi FieldByName untuk mendapatkan objek reflect.Value bagi medan Nama dan Umur masing-masing dan cetak jenis dan nilainya.
Perlu diingatkan bahawa fungsi FieldByName hanya boleh mencari medan awam (huruf pertama dengan huruf besar). Jika medan adalah peribadi (huruf kecil huruf pertama), ia tidak boleh diperoleh menggunakan fungsi FieldByName. Selain itu, jika medan tidak wujud, fungsi FieldByName mengembalikan objek reflect.Value dengan nilai sifar.
Ringkasan:
Fungsi reflect.FieldByName ialah salah satu fungsi pantulan yang sangat berguna dalam bahasa Go. Ia boleh mencari medan yang sepadan dalam objek berdasarkan nama medan dan mengembalikan objek reflect.Value yang sepadan. Dalam pembangunan sebenar, kita boleh menggunakan fungsi ini untuk mendapatkan dan mengubah suai nilai medan struktur secara dinamik. Tetapi perlu diingatkan bahawa ia hanya boleh mencari medan awam, dan hasil yang dikembalikan adalah objek mencerminkan. Kita perlu menggunakan kaedah Jenis dan Antara Muka untuk mendapatkan jenis dan nilai medan.Atas ialah kandungan terperinci Analisis dokumen bahasa Go: reflect.FieldByName fungsi melaksanakan refleksi medan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!