Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memanggil Kaedah Struktur Secara Dinamik mengikut Nama dalam Go?
Memanggil Struct dan Kaedahnya mengikut Nama dalam Go
Apabila bekerja dengan struct, mungkin terdapat keadaan di mana anda perlu menggunakan kaedah tertentu secara dinamik dengan namanya. Ini boleh berguna dalam situasi di mana nama kaedah ditentukan pada masa jalan atau apabila anda ingin menyamaratakan kod untuk bekerja dengan struktur yang berbeza.
Tidak seperti beberapa bahasa lain, Go tidak menyediakan mekanisme yang mudah untuk memanggil kaedah oleh mereka nama. Walau bagaimanapun, dengan menggunakan kuasa refleksi, adalah mungkin untuk mencapai fungsi ini. Begini caranya:
Sebagai contoh, mengambil kira struct dan kaedah berikut:
type MyStruct struct { // Fields here } func (p *MyStruct) MyMethod() { fmt.Println("My statement.") }
Anda boleh memanggil kaedah ini secara dinamik seperti berikut:
structValue := reflect.ValueOf(&myStruct) method := structValue.MethodByName("MyMethod") method.Call([]reflect.Value{})
Kod ini akan mencetak "Kenyataan saya." ke konsol.
Nota: Adalah penting untuk memastikan bahawa kedua-dua struct dan kaedah yang anda cuba panggil kelihatan dan boleh diakses dalam pakej atau skop semasa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Kaedah Struktur Secara Dinamik mengikut Nama dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!