函數(shù)是基本的代碼塊,用于執(zhí)行一個(gè)任務(wù)。
Go 語(yǔ)言最少有個(gè) main() 函數(shù)。
你可以通過(guò)函數(shù)來(lái)劃分不同功能,邏輯上每個(gè)函數(shù)執(zhí)行的是指定的任務(wù)。
函數(shù)聲明告訴了編譯器函數(shù)的名稱(chēng),返回類(lèi)型,和參數(shù)。
Go 語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供了多種可動(dòng)用的內(nèi)置的函數(shù)。例如,len() 函數(shù)可以接受不同類(lèi)型參數(shù)并返回該類(lèi)型的長(zhǎng)度。如果我們傳入的是字符串則返回字符串的長(zhǎng)度,如果傳入的是數(shù)字,則返回?cái)?shù)組中包含的函數(shù)個(gè)數(shù)。
Go 語(yǔ)言函數(shù)定義格式如下:
func function_name( [parameter list] ) [return_types] { 函數(shù)體 }
函數(shù)定義解析:
以下實(shí)例為 max() 函數(shù)的代碼,該函數(shù)傳入兩個(gè)整型參數(shù) num1 和 num2,并返回這兩個(gè)參數(shù)的最大值:
/* 函數(shù)返回兩個(gè)數(shù)的最大值 */ func max(num1, num2 int) int { /* 聲明局部變量 */ result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
當(dāng)創(chuàng)建函數(shù)時(shí),你定義了函數(shù)需要做什么,通過(guò)調(diào)用改函數(shù)來(lái)執(zhí)行指定任務(wù)。
調(diào)用函數(shù),向函數(shù)傳遞參數(shù),并返回值,例如:
package main import "fmt" func main() { /* 定義局部變量 */ var a int = 100 var b int = 200 var ret int /* 調(diào)用函數(shù)并返回最大值 */ ret = max(a, b) fmt.Printf( "最大值是 : %d\n", ret ) } /* 函數(shù)返回兩個(gè)數(shù)的最大值 */ func max(num1, num2 int) int { /* 定義局部變量 */ var result int if (num1 > num2) { result = num1 } else { result = num2 } return result }
以上實(shí)例在 main() 函數(shù)中調(diào)用 max()函數(shù),執(zhí)行結(jié)果為:
最大值是 : 200
Go 函數(shù)可以返回多個(gè)值,例如:
package main import "fmt" func swap(x, y string) (string, string) { return y, x } func main() { a, b := swap("Mahesh", "Kumar") fmt.Println(a, b) }
以上實(shí)例執(zhí)行結(jié)果為:
Kumar Mahesh
函數(shù)如果使用參數(shù),該變量可稱(chēng)為函數(shù)的形參。
形參就像定義在函數(shù)體內(nèi)的局部變量。
調(diào)用函數(shù),可以通過(guò)兩種方式來(lái)傳遞參數(shù):
傳遞類(lèi)型 | 描述 |
---|---|
值傳遞 | 值傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份傳遞到函數(shù)中,這樣在函數(shù)中如果對(duì)參數(shù)進(jìn)行修改,將不會(huì)影響到實(shí)際參數(shù)。 |
引用傳遞 | 引用傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)的地址傳遞到函數(shù)中,那么在函數(shù)中對(duì)參數(shù)所進(jìn)行的修改,將影響到實(shí)際參數(shù)。 |
默認(rèn)情況下,Go 語(yǔ)言使用的是值傳遞,即在調(diào)用過(guò)程中不會(huì)影響到實(shí)際參數(shù)。
函數(shù)用法 | 描述 |
---|---|
函數(shù)作為值 | 函數(shù)定義后可作為值來(lái)使用 |
閉包 | 閉包是匿名函數(shù),可在動(dòng)態(tài)編程中使用 |
方法 | 方法就是一個(gè)包含了接受者的函數(shù) |