函数
使用func
声明函数
func sum(p1, p2 int) int { // 相邻参数类型相同时,可合并声明参数类型
return p1 + p2
}
func ff(p1 int, p2 string) (int, string) { // 多返回值的类型声明需要使用圆括号
return p1, p2
}
函数可作参数
func ff(fn func() int) int { // 函数作形参
return fn()
}
func main() {
ff(func() int { return 100 }) // 匿名函数作实参
}
不定参数
func ff(s string, n ...int) { // 不定参数只能有一个,且必须是最后一个形参,本质上就是slice
print(s)
for _, v := range n {
print(v)
}
}
func main() {
ff("test", 1, 2, 3, 4, 5) // 可以传不定个数的实参
ff("test") // 不传实参的话,n的值为nil
}
返回值
func ff(p1 int, p2 string) (int, string) { // 函数可以返回多个返回值
return p1, p2
}
func main() {
i, s := 16, "abc"
a, b := ff(i, s) // 使用多个参数接收返回值
ff(i, s) // 可以不接收返回值
c, _ := ff(i, s) // 但如果接收返回值,则所有返回值都需要接收。无用的返回值使用`_`忽略
print(a, b, c)
}
多返回值可直接用作函数实参
import "strconv"
func conv(p1, p2 string) (int, int) {
num1, _ := strconv.Atoi(p1)
num2, _ := strconv.Atoi(p2)
return num1, num2
}
func sum(x, y int) int {
return x + y
}
func main() {
a, b := "123", "456"
s := sum(conv(a, b)) // 多返回值直接作实参
print(s)
}
隐式返回
func sum(x, y int) (sum int) { // 这里指定返回参数名
sum = x + y
return // 这里隐式返回指定的变量
}
func main() {
s := sum(16, 32)
print(s)
}