Go 函数
Go 函数的声明、参数、多个返回值、命名返回值与函数作为一等值的基本模型。
#type / concept
#status / growing
#tech / dev
#resource / go
[!info] related notes
- 所属 MOC: Go 语言基础 MOC
- 前置概念: Go 程序结构, Go 流程控制
- 并列概念: Go 错误处理, Go 的 struct 与方法
Go 函数
一句话定义
Go 函数是组织可复用行为的基本单位,支持多个参数、多个返回值,并且函数本身也可以作为值进行传递。
核心机制 / 工作原理
Go 函数的几个关键特征:
- 形参写法是
name type - 返回值类型写在参数列表之后
- 支持多个返回值
- 支持可变参数
- 函数是一等值,可以赋值给变量、作为参数传递、作为返回值返回
多个返回值是 Go 很核心的语言设计,因为它直接支撑了:
- 错误处理中的
value, err := ... - 一些函数返回“结果 + 状态”
最小例子 / 最小场景
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}
这个例子里最关键的不是语法,而是 Go 的思路:
- 错误不是异常通道,而是普通返回值的一部分
- 调用者必须显式处理
需要建立的函数心智
- Go 函数通常追求签名清晰而不是花哨
- 多返回值是常态,不是例外
- 业务逻辑里的很多“是否成功”都应该直接体现在返回值设计里
边界与易混淆点
- 方法不是特殊关键字语法,本质上是带接收者的函数
- 命名返回值可以用,但滥用会降低可读性
- 可变参数本质上会收拢成切片