函数
1.定义
定义格式如下
func functionName([parameter list]) [returnTypes]{
//body
}
都是用func进行定义,返回值类型用returnTypes定义。
functionName是函数名。
返回值可以有,可以没有。
2.值传递和引用类型
值传递是指在函数调用过程中将实参拷贝一份到函数中,这样在函数中如果对参数进行修改,将不会影响到实参。
引用传递是指在函数调用过程中将实参的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实参。
3.可变参数函数
在go语言中也支持可变参数,但需要注意的是可变参数必须放在函数参数的最后一个,否则会报错。
4.返回值
Go语言支持函数具有多个返回值。在c和c++中主要是用结构体实现的。
例:
func div(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("The divisor cannot be zero.")
}
return a / b, nil
}
5.闭包
闭包可以解释为一个函数与这个函数外部变量的一个封装。粗略的可以理解为一个类,类里面有变量和方法,其中闭包所包含的外部变量对应着类中的静态变量。
6.匿名函数
匿名函数如其名字一样,是一个没有名字的函数,除了没有名字外其他地方与正常函数相同。匿名函数可以直接调用,保存到变量,作为参数或者返回值。
例:
func main() {
f := func() string {
return "hello world"
}
fmt.Println(f())
}