Go(也稱為Golang)語(yǔ)言是一種靜態(tài)類型、編譯型語(yǔ)言,由Google開(kāi)發(fā),特別注重代碼的簡(jiǎn)潔性、清晰性和效率。在Go語(yǔ)言中,函數(shù)是基本的代碼塊,用于執(zhí)行特定任務(wù)。Go的函數(shù)定義和調(diào)用非常直接和靈活。
Go中的函數(shù)定義使用func
關(guān)鍵字開(kāi)始,后跟函數(shù)名和參數(shù)列表(參數(shù)名和類型),然后是返回類型(如果有的話,使用括號(hào)括起來(lái))。函數(shù)體被大括號(hào){}
包圍。
func functionName(parameter1 type1, parameter2 type2) (returnType1, returnType2) {
// 函數(shù)體
return value1, value2
}
如果函數(shù)沒(méi)有參數(shù),可以省略參數(shù)列表;如果函數(shù)沒(méi)有返回值,則返回類型也可以省略(或者顯式地寫(xiě)void
的等價(jià)物()
)。
無(wú)參數(shù)無(wú)返回值的函數(shù)
func sayHello() {
fmt.Println("Hello, World!")
}
有參數(shù)有返回值的函數(shù)
func add(a int, b int) int {
return a + b
}
多返回值的函數(shù)
func swap(x, y string) (string, string) {
return y, x
}
Go支持可變參數(shù)(也稱為可變長(zhǎng)參數(shù)或不定參數(shù)),通過(guò)在參數(shù)類型前添加...
來(lái)指定??勺儏?shù)必須是最后一個(gè)參數(shù),并且它必須是一個(gè)切片的類型。
func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}
Go也支持匿名函數(shù)(也稱為閉包),這些是沒(méi)有函數(shù)名的函數(shù)。它們通常被賦值給變量,然后像普通函數(shù)那樣被調(diào)用。
add := func(a, b int) int {
return a + b
}
result := add(5, 3)
fmt.Println(result) // 輸出: 8
Go支持遞歸函數(shù),即函數(shù)直接或間接地調(diào)用自身。遞歸函數(shù)在解決某些類型的問(wèn)題時(shí)非常有用,如遍歷樹(shù)形結(jié)構(gòu)或計(jì)算階乘。
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
Go的defer
語(yǔ)句會(huì)延遲函數(shù)的執(zhí)行直到包含它的函數(shù)即將返回。這通常用于資源清理,如關(guān)閉文件、解鎖互斥鎖等。
func a() {
defer fmt.Println("world")
fmt.Println("hello")
}
// 輸出:
// hello
// world
Go的函數(shù)是強(qiáng)大和靈活的,支持多種編程范式和模式,使得編寫(xiě)高效、可維護(hù)的代碼變得容易。