Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh menukar jenis penunjuk dan nilai pembolehubah antara muka menggunakan pantulan dalam Go?
Soalan
Bagaimana kita boleh menukar jenis dan nilai penunjuk pembolehubah yang ditakrifkan oleh antara muka menggunakan pantulan?
Jawapan
Dalam Go, semuanya diluluskan oleh nilai, termasuk antara muka. Apabila memberikan nilai antara muka, salinan dibuat, mengehadkan potensi pengubahsuaian.
Untuk mengubah suai nilai yang disimpan dalam pembolehubah antara muka, alamatnya mesti digunakan. Dengan mengakses alamat pembolehubah melalui reflect.ValueOf(&varName).Elem(), kita boleh menetapkan nilai penuding baharu ke dalamnya.
Contoh
var a fmt.Stringer // Interface variable a = &Greeter{"John"} v := reflect.ValueOf(&a).Elem() // Access variable's address v.Set(reflect.ValueOf(&Greeter2{"Jack"})) // Set new pointer value fmt.Println(a.String()) // Hello2, My name is Jack (Greeter2.String() called)
Mata Utama
Penghadan
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar jenis penunjuk dan nilai pembolehubah antara muka menggunakan pantulan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!