函数定义与多返回值
func 声明、多返回值、命名返回值、可变参数 ...、函数是值
函数定义与多返回值
Go 函数特色:多返回值(不用包装类)、命名返回值(自带文档)、函数是第一公民。
学完本章你将: 掌握 func、多返回值、命名返回值、可变参数、函数变量。
多返回值
go
package main
import "fmt"
// 返回两个值——Go 的错误处理就靠这个
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为零")
}
return a / b, nil
}
func main() {
result, err := divide(10, 3)
if err != nil {
fmt.Println("出错:", err)
return
}
fmt.Println(result) // 3.333...
}
命名返回值
go
// 命名返回值——相当于在函数顶部声明了变量
func split(sum int) (x, y int) { // x 和 y 已声明
x = sum * 4 / 9
y = sum - x
return // 裸 return(返回 x, y)
}
// 实际开发建议:简单函数用命名返回值,复杂函数显式 return
可变参数
go
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
fmt.Println(sum(1, 2, 3)) // 6
fmt.Println(sum(1, 2, 3, 4, 5)) // 15
// 展开切片
slice := []int{1, 2, 3}
fmt.Println(sum(slice...)) // 6
函数是值
go
// 函数可以赋值、传参、返回
var op func(int, int) int
op = func(a, b int) int { return a + b }
fmt.Println(op(3, 5)) // 8