流程控制与函数

Go 教程 · 第 4 章 · 8 次浏览

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
}