Bolehkah Fungsi Go Diluluskan sebagai Parameter?
Dec 03, 2024 pm 07:55 PMBolehkah 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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

Bagaimanakah saya boleh menggunakan alat linter dan analisis statik untuk meningkatkan kualiti dan pemeliharaan kod pergi saya?
