Golang語言社群--【基礎知識】函式
函式是一組一起執行任務的語句。每Go程式具有至少一個函式,它一般是main(),以及所有的最瑣碎程式可以定義附加函式。
你可以將程式碼放到獨立的功能。如何劃分程式碼之間的不同功能,但邏輯上的劃分通常是讓每個函式執行特定的任務。
函式宣告告訴編譯器有關的函式的名稱,返回型別和引數。一個函式定義提供了函式的實際主體。
Go語言標準庫提供了大量的內建函式,在程式可以呼叫。例如,函式len()需要不同型別的引數和返回值的型別的長度。例如,如果一個字串傳遞給它,它會返回字串的長度以位元組為單位,如果一個數組傳遞給它,它就會返回陣列的長度為它所擁有元素的個數。
函式稱為具有各種名字等的方法或子例程或程式等。
定義一個函式:
在Go程式語言的函式定義的一般形式如下:
func function_name( [parameter list] ) [return_types]
{
body of the function
}
在Go程式語言中的函式定義由函式頭和函式體。這裡是一個函式的所有部分:
- func 開始函式的宣告。
- Function Name: 這是該函式的實際名稱。函式名和引數列表一起構成了函式簽名。
- Parameters: 引數是像一個佔位符。當呼叫一個函式,你傳遞一個值的引數。這個值被稱為實際引數或引數。引數列表指的型別,順序和數量的函式的引數。引數是可選的;也就是說,一個函式可包含任何引數。
- Return Type: 函式可能返回值的列表。return_types是該函式返回值的資料型別的列表。有些函式執行所需的操作沒有返回值。在這種情況下,return_type不是必需的。
- Function Body: 函式體包含了定義函式操作語句的集合。
例子:
下面是一個函式的原始碼稱為max()。這個函式有兩個引數num1與num2並返回兩者之間的最大值:
/* function returning the max between two numbers */ func max(num1, num2 int) int { /* local variable declaration */ result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
呼叫一個函式:
建立一個Go程式設計的函式必須做一個定義。要使用函式,需要呼叫該函式來執行規定的任務。
當程式呼叫函式,程式控制被轉移到所呼叫的函式。呼叫函式定義執行任務時,被執行的return語句或達到其功能結束的右括號,則返回程式控制返回到主程式。
要呼叫一個函式,只需要通過必要的引數以及函式的名稱,如果函式返回一個值,那麼可以儲存返回值。例如:
保持max()函式與main()函式並編譯原始碼。在執行最後的可執行檔案,它會產生如下結果:
Max value is : 200
從函式返回多個值
Go語言函式可以返回多個值。例如:
函式引數:
如果一個函式使用引數,它必須宣告接受的引數值的變數。這些變數被呼叫的函式的形式引數。
正式的引數表現得就像在函式內部其他本地變數並且在進入函式建立和退出時銷燬。
當呼叫一個函式,有一些引數可以傳遞給函式,有兩種方法:
呼叫型別 |
描述 |
---|---|
按值呼叫 |
這種方法複製一個引數的實際值到函式的形式引數。在這種情況下,引數在函式內變化對引數沒有影響 |
參考呼叫 |
這種方法複製一個引數的地址複製到形式引數。在函式裡邊,地址是用來訪問呼叫中使用的實際引數。這意味著,對引數的更改會影響引數 |
預設情況下,Go使用按值呼叫傳遞引數。在一般情況下,這意味著一個函式中的程式碼不能改變用來呼叫該函式的引數和上面提到的例子,而呼叫max()函式中使用同樣的方法。
函式用途:
函式用途 |
描述 |
---|---|
函式作為值 |
函式可以執行建立並且可以被用作值 |
閉包函式 |
函式閉合是匿名的函式,可以在動態程式設計中使用 |
方法 |
方法是用一個接收器的特殊功能 |