函数
约 460 字大约 2 分钟
2026-01-18
1. 函数声明与参数
Go 语言中使用关键字 func 声明函数,其参数必须标注类型,多个参数可共享类型;回值写在形参列表后,多个返回值要用括号进行包裹
函数声明与多返回值
package main
import "fmt"
func foo(a, b int) (int, int) {
c := a + b
d := a / b
return c, d
}
func main() {
sum, div := foo(6, 3)
fmt.Println(sum, div) // 9 2
}提示
返回值可以有名称(如 func f() (sum int)),可读性提升但不强制;命名返回值会按类型零值初始化
2. 错误处理:显式返回 error
Go 不抛异常,错误是普通值。函数通过显式返回 error 由调用方处理;不处理就什么都不会发生。
显式返回 error
package main
import (
"errors"
"fmt"
)
func bar() error {
return errors.New("something went wrong")
}
func main() {
// 常见模式:if err := ...; err != nil { ... }
if err := bar(); err != nil {
fmt.Println("handle error:", err)
// 可以 return 或继续处理
}
}重要
error只是接口类型,不处理不会自动终止程序。- 对外暴露的错误建议可判等或含上下文信息(例如用
fmt.Errorf("...: %w", err)包装)。
3. 组合示例
综合参数、多返回值和错误处理。
参数 + 多返回值 + error
package main
import (
"errors"
"fmt"
)
// 返回:和、商、错误
func calc(a, b int) (int, int, error) {
if b == 0 {
return 0, 0, errors.New("divide by zero")
}
return a + b, a / b, nil
}
func main() {
m, n := 6, 3
sum, div, err := calc(m, n)
if err != nil {
fmt.Println("calc err:", err)
return
}
fmt.Println("sum:", sum, "div:", div)
}4. 时间相关的函数(提示)
时间操作集中在标准库 time 包:time.Now() 获取当前时间,time.Sleep 休眠,time.Since/time.Until 计算间隔,time.Parse/Format 处理字符串与时间格式。需要时可在工程中补充专题笔记。