首頁 > 後端開發 > Golang > golang匿名函數和閉包的程式碼範例與最佳範例解析

golang匿名函數和閉包的程式碼範例與最佳範例解析

王林
發布: 2024-05-05 08:18:02
原創
457 人瀏覽過

匿名函數:匿名函數是沒有名稱的函數,用於建立一次性函數或回呼。閉包:閉包包含匿名函數和外部變數引用,可以存取和修改外部變數。

golang匿名函數和閉包的程式碼範例與最佳範例解析

Go 語言中的匿名函數和閉包

什麼是匿名函數?

匿名函數是沒有名稱的函數,通常用於建立一次性使用的函數或回呼。

宣告匿名函數語法:

func(参数列表)(返回值列表) { 函数体 }
登入後複製

例如:

將數字列表平方:

numbers := []int{1, 2, 3, 4, 5}
result := map(func(n int) int { return n * n }, numbers)
登入後複製

什麼是閉包?

閉包是一個包含匿名函數和外部變數參考的函數值。這意味著閉包可以存取和修改外部變數。

建立閉包語法:

func(参数列表)(返回值列表) {
    // 内部定义的变量
    变量名 := 值
    return func(闭包参数列表)(闭包返回值列表) {
        // 可以访问和修改内部变量
    }
}
登入後複製

範例:

建立一個傳回每頁重複指定次數的單字的函數:

package main

import "fmt"

func makeRepeated(s string, n int) func() string {
    i := 0
    return func() string {
        i++
        return fmt.Sprintf("%s%d", s, i)
    }
}

func main() {
    repeat := makeRepeated("a", 5)
    fmt.Println(repeat())
    fmt.Println(repeat())
}
登入後複製

輸出:

a1
a2
登入後複製

以上是golang匿名函數和閉包的程式碼範例與最佳範例解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板