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", "zaixian")
fmt.Println(a, b)
}
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "zaixian")
fmt.Println(a, b)
}
以上實例執行結果為:
zaixian Google
函數參數
函數如果使用參數,該變數可稱為函數的形參。
形參就像定義在函數體內的局部變數。
調用函數,可以通過兩種方式來傳遞參數:
傳遞類型 | 描述 |
---|---|
值傳遞 | 值傳遞是指在調用函數時將實際參數複製一份傳遞到函數中,這樣在函數中如果對參數進行修改,將不會影響到實際參數。 |
引用傳遞 | 引用傳遞是指在調用函數時將實際參數的地址傳遞到函數中,那麼在函數中對參數所進行的修改,將影響到實際參數。 |
默認情況下,Go 語言使用的是值傳遞,即在調用過程中不會影響到實際參數。
函數用法
函數用法 | 描述 |
---|---|
函數作為另外一個函數的實參 | 函數定義後可作為另外一個函數的實參數傳入 |
閉包 | 閉包是匿名函數,可在動態編程中使用 |
方法 | 方法就是一個包含了接受者的函數 |