流程控制与函数
Go 的函数支持多返回值(这是它处理错误的根基),还支持匿名函数和闭包。
函数定义
func 函数名(参数) 返回类型 { }。多个返回值:func div(a, b int) (int, error)。
错误处理惯例
Go 没有 try-catch,函数返回 error,调用方判断 err != nil。这是 Go 的风格,习惯了挺清爽。
defer
defer 延迟执行:函数退出前执行,用于关闭文件、解锁等清理操作,无论是否出错都会执行。
代码示例
package main
import (
"fmt"
"errors"
)
// 多返回值 + 错误
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("除数不能为 0")
}
return a / b, nil
}
func main() {
// 错误处理惯例
result, err := divide(10, 0)
if err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println("结果:", result)
}
// defer 清理
defer fmt.Println("函数结束(defer)")
// 闭包
counter := func() func() int {
count := 0
return func() int {
count++
return count
}
}()
fmt.Println(counter()) // 1
fmt.Println(counter()) // 2
}