定義
golang函數(shù)的定義:
func 函數(shù)名(參數(shù)) 返回參數(shù){
//函數(shù)體
}
特點(diǎn)
在golang中至少有一個(gè)main函數(shù)
每個(gè)包只能有一個(gè)main函數(shù)
golang函數(shù)的功能相比于C/C++更便捷,golang函數(shù)可以返回多個(gè)值,這極大地方便了使用
1. golang函數(shù)可以返回多個(gè)值
下面的函數(shù)返回了int 和error兩個(gè)值,利用這個(gè)特性我們就可以判斷函數(shù)內(nèi)的執(zhí)行情況,并做出決策,終止運(yùn)行或者返回錯(cuò)誤。
func GetData() (int, error){
return 0, nil
}
2. golang的函數(shù)均包含 func 關(guān)鍵字
3. golang支持匿名函數(shù)(即閉包)
匿名函數(shù)就是沒(méi)有名字的函數(shù),其用途有以下幾種:
1.匿名函數(shù)賦給變量
// 匿名函數(shù)賦給變量
data := func(a int){
fmt.Println("a is %d", a)
}
fmt.Println(data(10))
//輸出
a is 10
2.用作回調(diào)函數(shù)
// 遍歷切片的每個(gè)元素, 通過(guò)給定函數(shù)進(jìn)行元素訪問(wèn)
func visit(list []int, f func(int)) {
for _, v := range list {
f(v)
}
}
func main() {
// 使用匿名函數(shù)打印切片內(nèi)容
visit([]int{1, 2, 3, 4}, func(v int) {
fmt.Println(v)
})
}
3. 開(kāi)啟新的goroutine
func main() {
ch := make(chan int)//用于等待goroutine執(zhí)行
fmt.Println("program is start")
go func(){
fmt.Println("start new goroutine")
ch<-1
}
<-ch
}
4. golang函數(shù)支持可變參數(shù)
下面的函數(shù)入?yún)ⅲ琻ums,是可變參數(shù),可以傳多個(gè),也可以不傳
func test(nums ...int){
for _,value := range nums{
fmt.Println("%d", value)//打印參數(shù)
}
}
func main() {
test(1, 2, 3, 4, 5)
}
//打印結(jié)果
1
2
3
4
5