Go 語言函式
Go 語言函式
函式是基本的程式碼塊,用於執行一個任務。
Go 語言最少有個 main() 函式。
你可以通過函式來劃分不同功能,邏輯上每個函式執行的是指定的任務。
函式宣告告訴了編譯器函式的名稱,返回型別,和引數。
Go 語言標準庫提供了多種可動用的內建的函式。例如,len() 函式可以接受不同型別引數並返回該型別的長度。如果我們傳入的是字串則返回字串的長度,如果傳入的是陣列,則返回陣列中包含的元素個數。
函式定義
Go 語言函式定義格式如下:
func function_name( [parameter list] ) [return_types] { 函式體 }
函式定義解析:
- func:函式由 func 開始宣告
- function_name:函式名稱,函式名和引數列表一起構成了函式簽名。
- parameter list:引數列表,引數就像一個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是說函式也可以不包含引數。
- return_types:返回型別,函式返回一列值。return_types 是該列值的資料型別。有些功能不需要返回值,這種情況下 return_types 不是必須的。
- 函式體:函式定義的程式碼集合。
例項
以下例項為 max() 函式的程式碼,該函式傳入兩個整型引數 num1 和 num2,並返回這兩個引數的最大值:
例項
/* 函式返回兩個數的最大值 */
func max(num1, num2 int) int {
/* 宣告區域性變數 */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
func max(num1, num2 int) int {
/* 宣告區域性變數 */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
函式呼叫
當建立函式時,你定義了函式需要做什麼,通過呼叫該函式來執行指定任務。
呼叫函式,向函式傳遞引數,並返回值,例如:
例項
package main
import "fmt"
func main() {
/* 定義區域性變數 */
var a int = 100
var b int = 200
var ret int
/* 呼叫函式並返回最大值 */
ret = max(a, b)
fmt.Printf( "最大值是 : %d\n", ret )
}
/* 函式返回兩個數的最大值 */
func max(num1, num2 int) int {
/* 定義區域性變數 */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
import "fmt"
func main() {
/* 定義區域性變數 */
var a int = 100
var b int = 200
var ret int
/* 呼叫函式並返回最大值 */
ret = max(a, b)
fmt.Printf( "最大值是 : %d\n", ret )
}
/* 函式返回兩個數的最大值 */
func max(num1, num2 int) int {
/* 定義區域性變數 */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
以上例項在 main() 函式中呼叫 max()函式,執行結果為:
最大值是 : 200
函式返回多個值
Go 函式可以返回多個值,例如:
例項
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "itread01")
fmt.Println(a, b)
}
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "itread01")
fmt.Println(a, b)
}
以上例項執行結果為:
itread01 Google
函式引數
函式如果使用引數,該變數可稱為函式的形參。
形參就像定義在函式體內的區域性變數。
呼叫函式,可以通過兩種方式來傳遞引數:
傳遞型別 | 描述 |
---|---|
值傳遞 | 值傳遞是指在呼叫函式時將實際引數複製一份傳遞到函式中,這樣在函式中如果對引數進行修改,將不會影響到實際引數。 |
引用傳遞 | 引用傳遞是指在呼叫函式時將實際引數的地址傳遞到函式中,那麼在函式中對引數所進行的修改,將影響到實際引數。 |
預設情況下,Go 語言使用的是值傳遞,即在呼叫過程中不會影響到實際引數。
函式用法
函式用法 | 描述 |
---|---|
函式作為另外一個函式的實參 | 函式定義後可作為另外一個函式的實引數傳入 |
閉包 | 閉包是匿名函式,可在動態程式設計中使用 |
方法 | 方法就是一個包含了接受者的函式 |