1、具名返回值
具名返回值让函数能够在返回前将值赋给具名变量,使其功能更加明确,要是具名返回值,可在函数签名的返回值部分指定变量名。
func gc() (a,b int){
a = 1
b = 2
return
}
这个函数指定要返回两个值,他们的类型都是int,还制定了变量名。
在终止语句return前给变量赋值,在使用具名返回值时,无须显式的返回相应的变量。
func main(){
fmt.Println(gc())
}
2、递归函数
递归函数是不断的调用自己直到满足特定条件的函数,要在函数中实现递归,可将调用自己的代码作为终止语句中的返回值。
func fibonaci(i int) (ret int) {
if i == 0 {
return 0
}
if i == 1 {
return 1
}
return fibonaci(i-1) + fibonaci(i-2)
}
函数的最后一行没有返回值,而是调用自己,这样将再次执行这个函数。通常递归函数不断调用自己,直到满足程序中指定的条件,如果i等于0或者1的时候返回。
3、将函数作为值传递
go语言提供了一些函数式编程功能,如能够将一个函数作为参数传递给其他函数。
func xx(f func() string) string {
return f()
}
func main(){
fn := func() string {
return "hello"
}
fmt.Println(xx(fn))
}
这里函数xx的参数就是一个函数,这个函数的返回值是string,xx的函数返回值也是string。
先定义一个函数给变量fn,函数的功能就是返回hello,然后把这个函数传入函数xx中。