Go函数
Go函数
定义
func name(params)(return params){
function body
}
//eg,如果相邻的参数类型是相同的,则可以省略前一个类型
func cal(a,b int) int{
return a+b;
}
//可以对返回值进行命名,注意需要显式调用return语句进行返回
func div(dividend,divsor int)(quotient,remainder int){
quotient=dividend/divsor
remainder=dividend%divsor
return
}
//注意返回参数不能一个命名,一个不命名,只能选一种方式
func div2(dividend, divsor int) ( int, int) {
quotient := dividend / divsor
remainder := dividend % divsor
return quotient, remainder
}
//报错,error前没有返回参数名
//func myFunc(x,y int)(sum int,error){
// return x+y,nil
//}
匿名函数
//在声明之后可以直接调用
func(name string) {
fmt.Println(name)
}("ss")
//赋值给给函数类型的变量
namePrint:=func(name string) {
fmt.Println(name)
}
namePrint("ss")
使用匿名函数作为回调函数
func proc(input string,processor func(str string)){
processor(input)
}
func main(){
proc("王小二",func(str string){
fmt.Print(str)
}
)
}
闭包
闭包是携带状态的函数,它是将函数内部和函数外部连接起来的桥梁。通过闭包,我们可以读取函数内部的变量。
func createCounter(ini int)func() int{
return func() int{
ini++;
return ini;
}
}
func main(){
c1:=createCounter(1)
fmt.Print(c1())//2
c2:=createCounter(10)
fmt.Print(c2())//11
fmt.Print(c1())//3
}