go 中沒有 lambda 表達式,但匿名函數提供了類似功能:匿名函數無名稱,直接嵌入代碼中,使用 func 關鍵字聲明。匿名函數可傳遞給其他函數或作為回調使用,類似于 lambda 表達式。匿名函數不能作為表達式使用或捕獲外部變量,與 lambda 表達式有區別。
Go 中的 Lambda 表達式
Go 語言中沒有明確的 lambda 表達式語法,但它提供了匿名函數,其行為類似于 lambda 表達式。
匿名函數
匿名函數是一種沒有名稱的函數,可以直接嵌入到代碼中。它們使用 func 關鍵字聲明,如下所示:
<code class="go">func(parameters) (return types) {
// 函數體
}</code>
登錄后復制
例如:
<code class="go">sum := func(a, b int) int {
return a + b
}</code>
登錄后復制
匿名函數作為 Lambda 表達式
匿名函數可以作為 lambda 表達式使用,因為它們可以傳遞給其他函數并作為回調使用。以下是一些示例:
切片排序:
<code class="go">sort.Slice(numbers, func(i, j int) bool {
return numbers[i] </code>
登錄后復制
映射切片:
<code class="go">mappedNumbers := map(numbers, func(n int) int {
return n * 2
})</code>
登錄后復制
與 Lambda 表達式的區別
雖然匿名函數在 Go 中提供了類似于 lambda 表達式的功能,但它們有一些關鍵區別:
匿名函數不能作為表達式使用,這意味著它們不能直接作為其他函數的參數傳遞。
匿名函數不能捕獲外部變量,而 lambda 表達式可以。
結論
Go 中的匿名函數提供了類似于 lambda 表達式的功能,允許開發者創建簡潔且可重用的代碼塊。雖然它們在某些方面有所不同,但它們為 Go 開發人員提供了處理函數式編程任務的有效方法。






