【Go】Go語言學習筆記-2-函數

函數是構建程序的基礎部件,定義以下:
type mytype int
func (p mytype) funcname(q int) (r, s int) {return 0,0}函數

  • 關鍵字func用於定義一個函數作用域

  • 函數能夠綁定到特定的類型上,叫作「接收者」,之後會詳細介紹。基礎

  • funcname是本身定義的函數名稱變量

  • int類型的變量p是輸入參數,傳值引用,會被複制。引用

  • r和s是這個函數的 命名返回值,能夠只有類型,也能夠沒有返回值。程序

  • 函數體只有一個return語句,返回兩個值方法

1. 做用域

定義在函數外部的變量是全局變量,定義在函數內部的變量是局部變量。若是命名覆蓋-一個局部變量與一個全局變量有相同的名字,那麼在該函數執行的時候,局部變量會覆蓋全局變量。goroutine

2. 多值返回

Go的函數和方法能夠返回多個值,元組沒有座位原生類型出現,因此多返回值多是最佳的選擇。命名

3. 命名返回值

Go的格言:用更少的代碼作更多的事。co

  • 函數的返回值能夠指定一個名字,而且像原始的變量那樣使用,就像輸入參數同樣。

  • 若是對其命名,在函數開始時,會用其類型的零值初始化。

  • 名字不是強制的。

4. 延遲代碼

在defer後指定的函數會在函數退出前調用。

  • 延遲的函數是按照先進後出FILO的順序執行。

  • 利用defer甚至能夠修改返回值。

5. 變參

接受不定數量的參數的函數叫作變參函數,例如:
func myfunc(arg ...int) {}
變量arg是一個int類型的slice,這些參數的類型所有都是int。

6. 函數做爲值

函數能夠賦值給變量,能夠在其餘地方被調用。

7. 回調

函數做爲參數能夠在另一個函數裏被調用。

8. 恐慌和恢復

Panic:是一個內建函數,能夠中斷原有的控制流程,進入一個使人恐慌的流程中,但函數F調用panic,函數F的執行被中斷,而且F中的延遲函數會正常執行,而後F返回到調用它的地方。在調用的地方,F的行爲就像調用了panic。這一過程繼續向上,直到程序崩潰時全部goroutine返回。

Recover:是一個內建函數,可讓進入使人恐慌的流程中得gorountine恢復過來。recover僅在延遲函數中有效。在正常的執行過程當中,調用recover會返回nil而且沒有其餘任何效果。若是當前的gorountine陷入恐慌,調用recover能夠捕獲到panic的輸入值,而且恢復正常的執行。

本文僅記錄了一些自認爲比較重要的信息,原書中有許多代碼的例子和講解,更爲詳細。

相關文章
相關標籤/搜索