go基础之函数
函数
函数是组织好的、可重复使用的、用于执行指定任务的代码块。Go语言中支持函数、匿名函数和闭包
函数的定义
使用func
关键字定义函数:
1 | func 函数名(参数)(返回值){ |
其中:
- 函数名:由
字母、数字、下划线
组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 - 参数:参数由
参数变量和参数变量的类型
组成,多个参数之间使用,
分隔。 - 返回值:返回值由
返回值变量和其变量类型
组成,也可以只写返回值的类型,多个返回值必须用()
包裹,并用,
分隔。 - 函数体:实现指定功能的
代码块
。
示例:定义一个求两个数之和的函数
1 | func intSum(x int, y int) int { |
函数的参数和返回值都是可选的
,例如我们可以定义一个既没有参数也没有返回值的函数:
1 | func sayHIHI() { |
函数的调用
我们可以通过函数名()
的方式调用函数。例如调用上面定义的求和函数,代码如下:
1 | func main() { |
注意:调用有返回值的函数时,可以不接收其返回值。
参数
类型简写
函数的参数中,如果相邻变量的类型相同,则可以省略类型
,例:
1 | func intSum(x, y int) int { |
上面的代码表示,intSum函数的两个参数的类型均为 int。因为y后面有类型说明,x参数也是该类型,所以可以省略x的类型。
可变参数
可变参数是指函数的参数数量不固定
,通过在参数名后加...
来标识。
注意:可变参数通常要作为函数的最后一个参数
。
举个例子:
1 | func intSum2(x ...int) int { |
调用上面的函数:
1 | func main() { |
固定参数搭配可变参数使用时,可变参数要放在固定参数的后面,示例代码如下:
1 | func intSum3(x int, y ...int) int { |
调用上述函数:
1 | ret5 := intSum3(100) |
本质上,函数的可变参数是通过切片来实现的。
返回值
多返回值
函数如果有多个返回值时必须用()
将所有返回值包裹起来
1 | func calc(x, y int) (int, int) { |
返回值命名
函数定义时可以给返回值命名,并在函数体中直接使用这些变量,最后通过return
关键字返回。
例如:
1 | func calc(x, y int) (sum, sub int) { |
返回值补充
当我们的一个函数返回值类型为slice时,nil可以看做是一个有效的slice,没必要显示返回一个长度为0的切片。
1 | func someFunc(x string) []int { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GO TO NEW WORLD!
评论