go語言defer與匿名函式

2021-09-20 06:35:21 字數 678 閱讀 8811

學習go語言的時候,遇到了乙個例子

func

main()

defer

func

(a [

]int

)(a)

a[0]

, a[1]

= a[2]

, a[3]

defer

func()

()}

這裡定義了乙個匿名函式,該匿名函式由defer修飾,意味著,該函式會在主函式return之後,執行,所有被defer修飾的函式會被壓入棧中,先被修飾的後執行。上述的例子中,會先輸出aloha,再列印陣列。

go語言的匿名函式分定義和呼叫兩種情況:

定義

func()

()

第乙個小括號是引數列表,第二個小括號是返回值,大括號中是函式體。 呼叫

無引數直接加括號

func()

int(

)

有引數,在括號裡加引數

func

(arge int)(

2)

也可以先賦給乙個變數再呼叫

a :=

func()

inta

()

Go返回匿名函式和Defer

go中有return func param1 paramtype1,param2 paramtype2,param paramtype returntype1,returntype2,返回乙個匿名函式的指標,我們在列印時可以列印出這個函式的位址。也可以通過返回值呼叫這個方法。舉例說明 type an...

Go 語言 函式defer的使用

在函式中,經常需要建立資源 比如 資料庫的連線 檔案 鎖等 為了在函式執行完畢後,及時釋放資源,go 提供了defer 延時機制 舉個栗子 package main import fmt 當執行到defer 時,暫時不會執行,會將defer 後面的語句 壓入到 棧中 特點 先進後出 當函式執行完畢後...

go語言 defer 高階

go語言defer語句的用法 defer後面必須是函式呼叫語句,不能是其他語句,否則編譯器會出錯。package main import log func foo n int int func main 這個例子中defer後面使用的是n 指令,不是乙個函式呼叫語句,編譯器就報錯 command l...