GO語言基礎-refer語句特性

GO語言獨有的refer,後面可以跟一個簡單語句或者跟一個匿名函數。refer必須處於一個方法或者函數中。

1. 簡單理解:refer一定會在一個函數和方法全部執行完之後纔會執行。可以理解成析構函數。

這裏寫圖片描述

2.refer中的語句,在編譯過程中就會生成語句,並將語句插入一個棧結構的隊列中,遵循先入後出的原則。因此,如果defer運用在循環中,一定要注意這一點。

這裏寫圖片描述

3.- 如果採用匿名函數形式,可以忽略返回定義,因爲defer不會處理返回值。如果傳入參數,defer中內容實際是在編譯期間就將參數替換爲對應的值,並插入到隊列中,如下例,實際插入隊列的代碼爲:
               fmt.Println(3)
               fmt.Println(2)
               fmt.Println(1)
               fmt.Println(0)

這裏寫圖片描述

4.如果是採用不傳值的匿名函數形式,那其中的變量實際插入隊列的值是變量值,也就是fmt.Println(k),當函數執行完畢後,再執行隊列中的語句,就是下面打印的結果。

這裏寫圖片描述

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