函数基础
语法格式:
func 函数名(参数)(返回值) {
函数体
}
参数
- 参数由参数变量和对应类型组成,多个参数用
,
分隔。 - Go语言中函数没有默认参数
- 类型简写:当连续两个或多个函数的参数类型相同时,除最后一个类型以外,其它都可以省略。比如参数
x int, y int
可以写成x, y int
。 - 可变参数:当参数数量不固定时,可以通过在参数名后加
...
来标识可变参数。可变参数在函数中通过切片来实现。可变参数必须放在固定参数的后面。示例如下:
func sum2(x ...int) int {
fmt.Println(x) // [1 2 3 4 5]
sum := 0
for _, v := range x {
sum += v
}
return sum
}
func main() {
sum := sum2(1, 2, 3, 4, 5)
fmt.Println(sum) // 15
}
返回值
Go语言通过return
关键字输出返回值,且支持多返回值。
返回值无命名
单返回值
func test1() int {
return 3
} // 调用时直接返回3
多返回值
func test2() (int, string) {
return 3, "多返回值"
}
多返回值的接收方式:
a, b := test2()
fmt.Println(a, b) // 3 多返回值
上面的a
和b
是自定义的变量名,用来接收返回值,不想接收某个值时可以用_
代替变量名。
返回值有命名
返回值有命名时可以直接用return
返回,当然写上变量名也没有关系。
命名的返回值可以直接使用,不需要再声明。
命名的多返回值如果类型相同,也可以类型简写。
func test3() (a int, b string) {
a = 3
b = "有命名"
return
}
调用后得到结果如下:
a, b := test3()
fmt.Println(a, b) // 3 有命名