Rumah >pembangunan bahagian belakang >Golang >Bolehkah Fungsi Go Diluluskan sebagai Parameter?
Bolehkah Fungsi Dilalui Sebagai Parameter dalam Go?
Java membenarkan menghantar fungsi sebagai parameter melalui penggunaan kelas dalaman tanpa nama. Adakah Go menyediakan mekanisme yang serupa untuk memudahkan fungsi ini?
Jawapan:
Sudah tentu! Go menyokong fungsi lulus sebagai parameter melalui fungsi dan penutupan tanpa nama. Berikut ialah beberapa contoh:
Contoh 1:
package main import "fmt" type convert func(int) string func value(x int) string { return fmt.Sprintf("%v", x) } func quote123(fn convert) string { return fmt.Sprintf("%q", fn(123)) } func main() { result := quote123(value) fmt.Println(result) // Output: "123" }
Dalam contoh ini, jenis fungsi tukar ditakrifkan untuk mengambil integer dan mengembalikan rentetan. Fungsi nilai melaksanakan penukaran dengan mengembalikan perwakilan rentetan bagi integer input. Fungsi petikan123 menerima fungsi tukar sebagai hujah dan mengembalikan perwakilan rentetan petikan hasil panggilan fungsi dengan nilai 123.
Contoh 2:
package main import "fmt" func main() { result := quote123(func(x int) string { return fmt.Sprintf("%b", x) }) fmt.Println(result) // Output: "1111011" }
Di sini, fungsi tanpa nama dihantar sebagai hujah kepada fungsi quote123. Fungsi tanpa nama menukar integer input kepada perwakilan rentetan binarinya.
Contoh 3:
package main import "fmt" func main() { foo := func(x int) string { return "foo" } result := quote123(foo) fmt.Println(result) // Output: "foo" }
Dalam kes ini, fungsi bernama, foo, dihantar sebagai hujah untuk dipetik123. Fungsi foo hanya mengembalikan rentetan "foo" untuk sebarang input.
Contoh ini menunjukkan fleksibiliti dan kuasa menghantar fungsi sebagai parameter dalam Go, membolehkan anda membuat kod generik dan boleh diguna semula.
Atas ialah kandungan terperinci Bolehkah Fungsi Go Diluluskan sebagai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!