函数
在go语言中函数定义格式如下:
func functionName([parameter list]) [returnTypes]{
//body
}
函数由func关键字进行声明。
functionName:代表函数名。
parameter list:代表参数列表,函数的参数是可选的,可以包含参数也可以不包含参数。
returnTypes:返回值类型,返回值是可选的,可以有返回值,也可以没有返回值。
body:用于写函数的具体逻辑
参数传递跟C++一样:值传递,引用传递,指针传递
在go语言中支持变长参数,但需要注意的是变长参数必须放在函数参数的最后一个,否则会报错。变长参数挺有意思的
例:
func main() {
slice := []int{7, 9, 3, 5, 1}
x := min(slice…)
fmt.Printf(“The minimum is: %d”, x)
}
func min(s …int) int {
if len(s) == 0 {
return 0
}
min := s[0]
for _, v := range s {
if v < min {
min = v
}
}
return min
}
多返回值
go语言中函数还支持一个特性那就是:多返回值。通过返回结果与一个错误值,这样可以使函数的调用者很方便的知道函数是否执行成功,这样的模式也被称为command,ok模式,在我们未来的程序设计中也推荐大家使用这种方式。
匿名函数
lambda表达式痛哭
闭包可以解释为一个函数与这个函数外部变量的一个封装。粗略的可以理解为一个类,类里面有变量和方法,其中闭包所包含的外部变量对应着类中的静态变量。