閉包的特點

閉包就是一個函數“捕獲”了和它在同一個作用域的其它常量和變量
當閉包被調用的時候,不管在程序什麼地方調用,閉包能夠使用這些常量或者變量
它不關心這些捕獲了的變量和常量是否已經超出了作用域,只有閉包還在使用它,這些變量就是存在的
在go語言中,所有的匿名函數(函數字面量)都是閉包,匿名函數指的是不需要定義函數名的一種函數實現方式
package main //必須
import “fmt”
//函數的返回值是一個匿名函數,返回一個函數類型
func test02 ( ) func ( ) {
var x int //沒有初始化,值爲0
return func( ) int {
x++
return xx
}
}
func main ( ) {
//返回值爲一個匿名函數,返回一個函數類型,通過f來調用返回的匿名函數,f來調用閉包
f := test02( )
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
fmt.Println(f())
}
func test01 ( ) int {
//函數被調用時,x才分配空間,才初始化爲0
var x int //沒有初始化,值爲0
x++
return x
x //函數調用完畢,x自動釋放
}
func main01( ) {
fmt.Println(test01())
fmt.Println(test01())
fmt.Println(test01())
fmt.Println(test01())
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章