匿名函式 閉包
匿名函式
? 顧名思義,就是沒有名字的函式,,,
func(){
fmt.Println("我就是匿名函式")
}
匿名函式的兩種執行方法
- 將匿名函式賦給一個變數
- 定義后立即執行匿名函式
// 講匿名函式賦給一個變數
tmp := func(){
fmt.Println("我是匿名函式")
}
tmp()
// 定以后立即執行匿名函式(在函式定義之后加小括號,表示直接運行)
func(){
fmt.Println("我是匿名函式")
}()
閉包
? 閉包是由函式和與其相關的參考環境組合而成的物體,個人認為就是把一個函式以及函式所用到的引數用另外一個函式包起來,保證函式多次運行的時候,所用到的值不會被初始化
func demo01() func(){
tmp := "這個變數無論多少次都不會被初始化"
tmp1 := 1
return func(){
tmp1++
fmt.Println(tmp,tmp1)
}
}
func main(){
test := demo01() // 此時test就是一個閉包
test() // 這個變數無論多少次都不會被初始化 2
test() // 這個變數無論多少次都不會被初始化 3
test() // 這個變數無論多少次都不會被初始化 4
test() // 這個變數無論多少次都不會被初始化 5
}
? 在上面的代碼可以看到,定義了兩個變數tmp和tmp1,這個被稱之為自由變數,把匿名函式放在return回傳的地方和自由變數構成的那個整體,就是閉包
優點
? 個人認為,就是使用自由變數這種概念,延長了函式中某些變數的生命周期,避免這些變數隨著函式的呼叫而反復的初始化
GPT是這么說的
閉包(Closure)是一種在Go語言中支持的函式特性,它允許函式訪問并操作函式外部的變數,閉包有以下幾個好處:
- 封裝:閉包可以訪問函式外部的變數,但外部無法訪問閉包內部的變數,這樣可以實作資料的封裝和保護,
- 狀態保持:閉包可以捕獲并保存外部變數的狀態,即使函式執行完畢,這些狀態仍然存在,這樣可以實作狀態的保持和傳遞,
- 動態生成函式:閉包可以根據運行時的資料動態生成新的函式,提供更多的靈活性,
總之,閉包為Go語言提供了更多的編程靈活性和表達能力,可以幫助開發人員更好地解決復雜問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550633.html
標籤:其他
下一篇:返回列表
