匿名函數(shù): 沒有函數(shù)名的函數(shù)
基本概念
閉包是可以包含自由(未綁定到特定對象)變量的代碼塊,這些變量不在這個代碼塊內(nèi)或者
任何全局上下文中定義,而是在定義代碼塊的環(huán)境中定義。要執(zhí)行的代碼塊(由于自由變量包含
在代碼塊中,所以這些自由變量以及它們引用的對象沒有被釋放)為自由變量提供綁定的計算環(huán)
境(作用域)。
閉包的價值
閉包的價值在于可以作為函數(shù)對象或者匿名函數(shù),對于類型系統(tǒng)而言,這意味著不僅要表示
數(shù)據(jù)還要表示代碼。支持閉包的多數(shù)語言都將函數(shù)作為第一級對象,就是說這些函數(shù)可以存儲到
變量中作為參數(shù)傳遞給其他函數(shù),最重要的是能夠被函數(shù)動態(tài)創(chuàng)建和返回。
package main
import (
"fmt"
)
func main() {
a := 10
str := "make"
//匿名函數(shù),沒有函數(shù)名字,函數(shù)定義,還沒有調(diào)用
f1 := func() {
fmt.Println("a=",a)
fmt.Println("str=",str)
}
f1()
// 給一個函數(shù)類型起別名
type FuncType func() // 函數(shù)沒有參數(shù),沒有返回值
// 聲明變量
var f2 FuncType
f2 = f1
f2()
//定義匿名函數(shù),同時調(diào)用
func() {
fmt.Printf("a=%d,str=%s\n", a,str)
}() // 后面的()代表調(diào)用匿名函數(shù)
// 帶參數(shù)的匿名函數(shù)
f3 := func(i,j int) {
fmt.Printf("i =%d, j=%d\n",i,j)
}
f3(1,2)
//定義匿名函數(shù),同時調(diào)用
func(i, j int) {
fmt.Printf("i=%d,j=%d\n", a,j)
}(10,20) // 后面的()代表調(diào)用匿名函數(shù)
//匿名函數(shù),有參數(shù)有返回值
x,y := func(i, j int) (max, min int){
if i > j{
return i,j
}else {
return j,i
}
}(10,20)
fmt.Println(x,y)
}
package main
import "fmt"
func test01() func() int {
var x int // 沒有初始化, 值為0
return func() int {
x++
return x * x
}
}
func test02() int {
var x int
x++
return x *x
}
func main() {
// 返回值為一個匿名函數(shù),返回一個函數(shù)類型,通過f來調(diào)用返回的匿名函數(shù)
// 它不關(guān)心這些捕獲了的變量和常量是否超出了作用域
// 所以只要閉包還在使用它,這些變量就還會存在
f := test01()
fmt.Println(f()) //1
fmt.Println(f()) //4
fmt.Println(f()) //9
fmt.Println(f()) //16
// 用完就釋放了,每次調(diào)用還是1
fmt.Println(test02())
fmt.Println(test02())
fmt.Println(test02())
}
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:Go匿名函數(shù)與閉包的使用-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://jinyejixie.com/article42/jgiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站收錄、標(biāo)簽優(yōu)化、虛擬主機、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容