1-宣告乙個匿名函式
func(引數列表) 返回值列表 ()
//有引數,在括號裡加引數
func(arge int) (2)
//也可以先賦給乙個變數再呼叫
a := func() int
a()程式輸出:
func 1
func 2
func 3
func main()
}()
a()
j *= 2
a()
} 程式輸出:
i, j: 10, 5
i, j: 10, 10
分析:1---"...func()(func()) ..."
表明返回的函式指標指向乙個列印 i, j: %d, %d\n 的函式;
3---"...a := func()(func()) ()..."
末尾的括號表明匿名函式被呼叫,並將返回的函式指標賦給變數a ;
綜合來看:
"...a := func()(func())
}()..."
此**片段的意思"等價於"
a := func()
至於為何要用匿名函式如此的轉一圈,是因為要引用閉包的概念,此概念省略不表,多寫點**試試就能體會了。
Go語言匿名函式困惑
這裡主要是描述我在學習過程中遇到的困惑。起初把函式單獨寫出來,想用普通函式那種寫好後再去main方法中呼叫,老是報錯。如下圖 真正的使用方法,要深刻體會匿名函式的緣由,它只是為了少數的幾次呼叫,又不想命名太多造成命名衝突,就使用一邊建構函式一邊使用的情況,不能單獨脫離呼叫來構造。1 宣告乙個匿名函式...
go語言匿名函式使用
介紹 go語言支援匿名函式,顧名思義你們那個函式就是沒有名字得函式,如果某個函式只使用一次,考慮使用匿名函式,匿名函式也可以多次呼叫。匿名函式使用方式 1 在定義匿名函式得時候直接呼叫,這種匿名函式只能使用一次 func main 10 20 fmt.println res1 res1 將乙個匿名函...
go語言defer與匿名函式
學習go語言的時候,遇到了乙個例子 func main defer func a int a a 0 a 1 a 2 a 3 defer func 這裡定義了乙個匿名函式,該匿名函式由defer修飾,意味著,該函式會在主函式return之後,執行,所有被defer修飾的函式會被壓入棧中,先被修飾的後...