Tiada ungkapan lambda dalam Go, tetapi fungsi tanpa nama menyediakan kefungsian yang serupa: fungsi tanpa nama tidak mempunyai nama, dibenamkan secara langsung dalam kod dan diisytiharkan menggunakan kata kunci func. Fungsi tanpa nama boleh dihantar ke fungsi lain atau digunakan sebagai panggilan balik, serupa dengan ungkapan lambda. Fungsi tanpa nama tidak boleh digunakan sebagai ungkapan atau menangkap pembolehubah luaran, tidak seperti ungkapan lambda.
Ungkapan Lambda dalam Go
Tiada sintaks eksplisit untuk ungkapan lambda dalam bahasa Go, tetapi ia menyediakan fungsi tanpa nama yang berkelakuan seperti ungkapan lambda.
Fungsi Tanpa Nama
Fungsi tanpa nama ialah fungsi tanpa nama yang boleh dibenamkan terus ke dalam kod. Mereka diisytiharkan menggunakan kata kuncifunc
seperti ini:
func(parameters) (return types) { // 函数体 }
Contohnya:
sum := func(a, b int) int { return a + b }
Fungsi tanpa nama sebagai ungkapan lambda
Fungsi tanpa nama boleh digunakan sebagai ungkapan lambda kerana ia boleh dihantar ke fungsi lain dan digunakan sebagai panggilan balik. Berikut ialah beberapa contoh:
sort.Slice(numbers, func(i, j int) bool { return numbers[i] < numbers[j] })
mappedNumbers := map(numbers, func(n int) int { return n * 2 })
Perbezaan dengan ungkapan Lambdamous yang serupaPergi fungsi, tetapi mereka mempunyai beberapa perbezaan utama:
Fungsi tanpa nama tidak boleh digunakan sebagai ungkapan, yang bermaksud ia tidak boleh dihantar terus sebagai hujah kepada fungsi lain.Fungsi tanpa nama dalam Go menyediakan fungsi yang serupa dengan ungkapan lambda, membolehkan pembangun mencipta blok kod yang ringkas dan boleh digunakan semula. Walaupun mereka berbeza dalam beberapa cara, mereka menyediakan pembangun Go dengan cara yang cekap untuk mengendalikan tugas pengaturcaraan berfungsi.
Atas ialah kandungan terperinci Adakah golang mempunyai ungkapan lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!