Mengambil Penunjuk Fungsi daripada Nama Fungsi dalam Go
Banyak bahasa pengaturcaraan membenarkan akses kepada penunjuk fungsi daripada perwakilan rentetan nama fungsi. Keupayaan ini amat berguna untuk teknik pengaturcaraan meta, seperti memilih fungsi secara dinamik untuk pelaksanaan.
Penyelesaian dalam Go
Tidak seperti beberapa bahasa lain, Go secara asli menyokong penunjuk fungsi sebagai yang pertama -nilai kelas, menghapuskan keperluan untuk mekanisme tambahan untuk mendapatkannya daripada nama fungsi. Sebaliknya, fungsi boleh dihantar terus sebagai argumen kepada fungsi lain.
Sebagai contoh, pertimbangkan kod 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)) }
Dalam kod ini, someOtherFunction menerima penunjuk fungsi sebagai argumen dan memanggil fungsi yang ditentukan dengan hujah yang disediakan.
Menggunakan Peta untuk Fungsi Dinamik Pemilihan
Dalam kes di mana pemilihan fungsi bergantung pada maklumat masa jalan, anda boleh menggunakan peta untuk mengaitkan nama fungsi dengan penunjuk fungsi yang sepadan. Contohnya:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Ini membolehkan anda mendapatkan semula dan melaksanakan fungsi secara dinamik berdasarkan kunci yang ditentukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Penunjuk Fungsi daripada Nama Fungsi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!