Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggunakan Nama Fungsi Rentetan untuk Memanggil Fungsi Secara Dinamik dalam Go?
Dalam Go, adalah mungkin untuk mendapatkan kembali penuding fungsi daripada nama fungsi yang disediakan sebagai rentetan. Keupayaan ini berharga dalam senario pengaturcaraan meta, seperti menggunakan fungsi secara dinamik berdasarkan parameter rentetan.
Tidak seperti sesetengah bahasa dinamik, fungsi Go ialah nilai kelas pertama. Oleh itu, anda boleh terus menghantar fungsi sebagai hujah kepada fungsi lain. Pertimbangkan contoh berikut:
package main import "fmt" func someFunction1(a, b int) int { return a + b } func someFunction2(a, b int) int { return a - b } func someOtherFunction(a, b int, f func(int, int) int) int { return f(a, b) } func main() { fmt.Println(someOtherFunction(111, 12, someFunction1)) fmt.Println(someOtherFunction(111, 12, someFunction2)) }
Output:
123 99
Dalam contoh ini, someOtherFunction mengambil dua hujah integer dan penunjuk fungsi (parameter f). Ia kemudian memanggil fungsi yang disediakan dengan hujah yang diberikan. Hasilnya dicetak.
Jika pemilihan fungsi bergantung pada nilai yang diketahui hanya pada masa jalan, anda boleh menggunakan peta:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Nama Fungsi Rentetan untuk Memanggil Fungsi Secara Dinamik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!