Go语言学习之旅05——函数

关于函数之前已经举过一些例子,这里再做详细的介绍

函数的声明

go语言的函数由:关键字func + 函数名称 + 参数列表 + 返回值列表 + 函数体组成,若是匿名函数,则可以省略函数名称

多返回值

go语言允许一个函数返回多个值,如果调用者只需要其中的部分返回值,不需要的返回值可以使用下划线_符号接收,这样编辑器就不会认为存在没有使用的变量了。

注意:go语言变量一经声明,必须使用,否则编译不通过,通过上述方法可以接收不需要使用的返回值

go语言的返回值可以命名,方式类似参数列表,这样做的好处是有:

  • 假设我们将返回值命名为score,那么我们如果在函数体内只需要给score赋完值,返回时只需要写return即可,而不是return score

  • 调用该函数的时候,可以通过返回值名称(由IDE工具生成或显示)来判断每一个返回值得含义

函数式编程

我们可以将一个函数传入作为入参,这样就可以实现动态化的功能

1
2
3
4
5
6
7
8
9
10
11
12
13

func fp(op func(a, b int) int, a, b int) int {
// 函数式编程,函数作为入参
return op(a, b)
}

func main() {
// 函数式编程
result := fp(func(a, b int) int {
return int(math.Pow(float64(a), float64(b)))
}, 3, 4)
fmt.Println(result)
}

可变参数列表

go语言没有默认参数默认值这样的设计,但是依然拥有可变参数列表:

1
2
3
4
5
6
7
8
func sum(nums ...int) int {
// 可变参数列表
result := 0
for i := 0; i < len(nums); i++ {
result += nums[i]
}
return result
}