Ungkapan Lambda dalam Go
Tidak seperti kebanyakan bahasa pengaturcaraan lain, Go tidak mempunyai ungkapan lambda dalam sintaksnya. Walau bagaimanapun, ia menyediakan mekanisme alternatif yang mencapai kefungsian yang serupa.
Fungsi Serupa dengan Ungkapan Lambda
Fungsi tanpa nama Go berfungsi sebagai pengganti ungkapan lambda. Fungsi tanpa nama ialah fungsi yang tidak mempunyai nama tertentu dan biasanya digunakan sebagai ungkapan sebaris. Sintaksnya ialah:
func(parameters) return_type { // function body }
Sebagai contoh, untuk mentakrifkan fungsi tanpa nama yang mengembalikan rentetan:
func() string { return "Stringy function" }
Penggunaan dalam Amalan
Tanpa Nama fungsi boleh diberikan kepada pembolehubah atau diluluskan sebagai argumen kepada fungsi lain, membenarkan penggunaan semula kod yang fleksibel dan penyesuaian. Pertimbangkan kod Go berikut:
type Stringy func() string func foo() string { return "Stringy function" } func takesAFunction(foo Stringy) { fmt.Printf("takesAFunction: %v\n", foo()) } func returnsAFunction() Stringy { return func() string { fmt.Printf("Inner stringy function\n") return "bar" // must return a string to be stringy } } func main() { takesAFunction(foo) f := returnsAFunction() f() baz := func() string { return "anonymous stringy\n" } fmt.Printf(baz()) }
Dalam contoh ini, kami mentakrifkan fungsi tanpa nama yang mengembalikan rentetan dan menetapkannya kepada pembolehubah f. Kami juga mencipta fungsi tanpa nama yang kemudiannya diberikan kepada pembolehubah baz. Kedua-dua f dan baz boleh digunakan seperti fungsi yang dinamakan.
Atas ialah kandungan terperinci Bagaimana Pergi Mencapai Fungsi Ungkapan Lambda Tanpa Sintaks Lambda Eksplisit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!