Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Meluluskan Fungsi sebagai Hujah dalam Go?
Melalui Fungsi sebagai Argumen: Pendekatan Metaprogramming di Golang
Seperti yang kita ketahui, fungsi Golang adalah nilai kelas pertama, menghapuskan keperluan untuk helah metaprogramming biasa dalam bahasa dinamik. Untuk menghantar fungsi sebagai hujah kepada fungsi lain, kita hanya boleh menggunakan sokongan sedia ada Golang untuk nilai fungsi. Berikut ialah contoh:
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)) }
Menjalankan program ini akan menghasilkan output berikut:
123 99
Sekarang, mari kita pertimbangkan senario di mana pemilihan fungsi bergantung pada masa jalan- hanya nilai yang diketahui. Untuk mengendalikan perkara ini, kita boleh mencipta peta yang mengaitkan nama fungsi dengan penunjuk fungsi masing-masing:
m := map[string]func(int, int) int{ "someFunction1": someFunction1, "someFunction2": someFunction2, } ... z := someOtherFunction(x, y, m[key])
Dengan cara ini, kita boleh menghantar fungsi sebagai hujah dengan namanya, memilih fungsi yang dikehendaki secara dinamik di masa jalan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meluluskan Fungsi sebagai Hujah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!