Kata Pengantar
Dalam pembangunan, kita selalunya perlu melakukan operasi pantulan pada struktur, pembolehubah, dsb. Menggunakan pantulan, kita boleh mengendalikan pembolehubah, jenis dan maklumat lain yang berkaitan secara langsung, yang menjadikan kod kita lebih abstrak dan fleksibel , menjadikan program Logiknya lebih jelas dan mudah. Antaranya, golang menyediakan pakej berkaitan pantulan reflect
Artikel ini akan memfokuskan pada pakej reflect
untuk menerangkan cara menggunakan pantulan untuk menetapkan pembolehubah.
Asas
Sebelum kita menyelami cara menetapkan pembolehubah menggunakan pantulan, kita perlu memahami beberapa asas.
Type
: Jenis pembolehubah Gunakan kaedah reflect.TypeOf()
untuk mendapatkan jenis pembolehubah. Value
: boleh difahami sebagai nilai pembolehubah, dan nilai pembolehubah boleh diperoleh menggunakan kaedah reflect.ValueOf()
. reflect.Value
mempunyai atribut berikut:
Kind()
: Mendapat jenis nilai dan nilai pulangan ialah jenis reflect.Kind
. Int()
, Float()
, Bool()
, String()
, Bytes()
, Interface()
, dsb.: Dapatkan nilai yang sepadan. Set()
: Tetapkan nilai, tetapi anda perlu memastikan bahawa nilai semasa adalah daripada jenis boleh tetap. Sila rujuk reflect.Value.Set()
untuk butiran. Nilai tetapan refleksi
Pembolehubah tetapan refleksi terbahagi terutamanya kepada langkah berikut:
reflect.Value
Nilai; reflect.Value.Set()
type Person struct { Name string Age int } func main() { p := Person{ Name: "John", Age: 25, } v := reflect.ValueOf(p) if v.Kind() == reflect.Struct { name := v.FieldByName("Name") age := v.FieldByName("Age") if name.IsValid() && name.CanSet() { name.SetString("Tom") } if age.IsValid() && age.CanSet() { age.SetInt(30) } } fmt.Println(p) }
v
, dan pembolehubah reflect.Value
diperoleh p
; Value
v.FieldByName()
Name
dan Age
; > menentukan sama ada reflect.Value
dan name
boleh melengkapkan pengubahsuaian atribut age
dan reflect.Value.CanSet()
dalam pembolehubah p
Name
Perlu diambil perhatian bahawa sebelum menetapkan nilai, anda perlu menentukan sama ada pembolehubah boleh ditetapkan, jika tidak, pengecualian Age
akan dilemparkan. panic
Pembolehubah Tetapan Refleksi Golang Berbanding dengan bahasa lain, operasi pembolehubah tetapan pantulan golang adalah sangat intuitif dan mudah, dan jenis yang disokong juga sangat kaya, yang menjadikan kami lebih cekap dalam pembangunan. Walau bagaimanapun, perlu diingatkan bahawa apabila menggunakan refleksi, anda perlu memberi perhatian kepada kedua-dua prestasi dan kebolehselenggaraan Ia tidak boleh digunakan secara berlebihan, jika tidak, ia akan membawa kepada masalah seperti penurunan kebolehbacaan program dan prestasi.
Atas ialah kandungan terperinci pembolehubah tetapan pantulan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!