go語言的匿名函式

2021-06-21 02:01:04 字數 650 閱讀 4839

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修飾的函式會被壓入棧中,先被修飾的後...