函數(shù)通常是程序中的代碼或語句塊,使用戶能夠重復(fù)使用相同的代碼,從而最終達(dá)到節(jié)省內(nèi)存,節(jié)省時(shí)間,更重要的是,提供了更好的代碼可讀性。因此,基本上函數(shù)是語句的集合,這些語句執(zhí)行某些特定的任務(wù)并將結(jié)果返回給調(diào)用方。函數(shù)也可以執(zhí)行某些特定任務(wù)而無需返回任何內(nèi)容。
函數(shù)聲明是一種構(gòu)造函數(shù)的方法。
語法:
func function_name(Parameter_list)(Return_type){ // function body..... }
該函數(shù)的聲明包含:
func:它是Go語言的關(guān)鍵字,用于創(chuàng)建函數(shù)。
function_name:它是函數(shù)的名稱。
Parameter_list:包含函數(shù)參數(shù)的名稱和類型。
Return_type:這是可選的,它包含函數(shù)返回的值的類型。如果在函數(shù)中使用return_type,則必須在函數(shù)中使用return語句。
函數(shù)調(diào)用是在用戶希望執(zhí)行函數(shù)時(shí)完成的。需要調(diào)用函數(shù)才能使用它的功能。如下面的示例所示,我們有一個(gè)名為add()的函數(shù),它有兩個(gè)參數(shù)?,F(xiàn)在我們通過使用其名稱,即具有兩個(gè)參數(shù)的area(12,10)在主函數(shù)中調(diào)用此函數(shù)。
package main import "fmt" //area()用于查找矩形的面積 //函數(shù)的兩個(gè)參數(shù),即長(zhǎng)度和寬度 func area(length, width int) int { Ar := length * width return Ar } func main() { //顯示矩形的面積 //通過方法調(diào)用 fmt.Printf("矩形的面積 : %d", area(12, 10)) }
輸出:
矩形的面積 : 120
在Go語言中,傳遞給函數(shù)的參數(shù)稱為實(shí)際參數(shù)(實(shí)參),而函數(shù)接收的參數(shù)稱為形式參數(shù)(形參)。
注意:默認(rèn)情況下,Go語言使用按值調(diào)用方法在函數(shù)中傳遞參數(shù)。
Go語言支持兩種向函數(shù)傳遞參數(shù)的方法:
按值調(diào)用:在此參數(shù)傳遞方法中,實(shí)際參數(shù)的值將復(fù)制到函數(shù)的形式參數(shù)中,并且兩種類型的參數(shù)存儲(chǔ)在不同的存儲(chǔ)位置中。因此,在函數(shù)內(nèi)部進(jìn)行的任何更改都不會(huì)反映在調(diào)用者的實(shí)際參數(shù)中。
package main import "fmt" // 交換值的函數(shù) func swap(a, b int)int{ var o int o= a a=b b=o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d 和 q = %d", p, q) // call by values swap(p, q) fmt.Printf("\np = %d 和 q = %d",p, q) }
輸出:
p = 10 和 q = 20 p = 10 和 q = 20
通過引用調(diào)用:實(shí)際參數(shù)和形式參數(shù)都指向相同的位置,因此在函數(shù)內(nèi)部所做的任何更改實(shí)際上都反映在調(diào)用者的實(shí)際參數(shù)中。
package main import "fmt" //交換值的函數(shù) func swap(a, b *int) int { var o int o = *a *a = *b *b = o return o } func main() { var p int = 10 var q int = 20 fmt.Printf("p = %d 和 q = %d", p, q) //引用調(diào)用 swap(&p, &q) fmt.Printf("\np = %d 和 q = %d", p, q) }
輸出:
p = 10 和 q = 20 p = 20 和 q = 10