Go語言學習之函數(shù)的定義與使用詳解
1、函數(shù)定義
函數(shù)的定義和java一樣,使用{}進行包裹,并且要明確入參類型以及返回類型。
樣例代碼如下:
func min(num1, num2 int) int { if num1 <= num2 { return num1 } else { return num2 } } func main() { fmt.Printf("max = %d\n", min(10, 12)) }
執(zhí)行結果
max = 10
2、多值返回
和Python一樣,可以多值返回。
樣例代碼如下
func swap(num1, num2 int) (int, string) { return num1 + num2, "haha" } func main() { a, b := swap(10, 12) fmt.Printf("swap = %d - %v\n", a, b) }
執(zhí)行結果
swap = 22 - haha
3、引用傳遞
可以將參數(shù)的引用地址傳遞到函數(shù),這樣操作會影響到實際參數(shù)。
樣例代碼如下
func swap1(num1, num2 *int) { var temp int temp = *num1 *num1 = *num2 *num2 = temp } func main() { c, d := 10, 20 swap1(&c, &d) fmt.Printf("swap1 c=%d,d=%d\n", c, d) }
執(zhí)行結果
swap1 c=20,d=10
4、函數(shù)作為實參使用
和python一樣,可以在方法內部定義函數(shù)。
樣例代碼如下
func method(num1 int) int { getMax := func(x, y int) int { if x > y { return x } else { return y } } a := num1 - 10 b := getMax(num1, a) fmt.Printf("value = %d\n", b) return b } func main() { fmt.Printf("method = %d\n", method(20)) }
執(zhí)行結果
value = 20
method = 20
5、匿名函數(shù)
函數(shù)返回匿名函數(shù),形成閉包。
樣例代碼如下
//匿名函數(shù) func anonymous(num int) func() int { var a int a = num return func() int { a += 1 return a } } func main() { flagNum := anonymous(100) fmt.Printf("1 -> %d\n", flagNum()) fmt.Printf("2 -> %d\n", flagNum()) fmt.Printf("3 -> %d\n", flagNum()) flagNum1 := anonymous(18) fmt.Printf("4 -> %d\n", flagNum1()) fmt.Printf("5 -> %d\n", flagNum1()) }
執(zhí)行結果
1 -> 101
2 -> 102
3 -> 103
4 -> 19
5 -> 20
到此這篇關于Go語言學習之函數(shù)的定義與使用詳解的文章就介紹到這了,更多相關Go語言 函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Go module和GoLand初始化一個Go項目的方法
這篇文章主要介紹了使用Go module和GoLand初始化一個Go項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12