函数返回值
多返回值
概念
- multiple results: 函数可返回多个值;
- 常见形式:
(value, ok)或(value, error); return: 返回值数量和类型必须匹配函数签名;
语法格式
func div(a, b int) (int, bool) {
if b == 0 {
return 0, false // 使用 bool 表示除法是否成功
}
return a / b, true
}
具名返回值
概念
- named result: 返回值拥有名字;
- named result 变量: 函数开始时创建,并按类型零值初始化;
- naked return: 不带表达式的
return,返回具名结果的当前值; - 显式
return: 使用具名返回值时仍可显式返回表达式; - 使用建议: 短函数可用,长函数慎用;
语法格式
func split(sum int) (x int, y int) {
// x 和 y 是具名返回值,函数开始时已经存在,初始值均为 0
x = sum / 2 // x 是具名返回值,在函数体内作为局部变量使用
y = sum - x
return // naked return 返回 x 和 y 当前值
}
func splitExplicit(sum int) (x int, y int) {
// 使用具名返回值时,return 依旧可以显式返回表达式
return sum / 2, sum - sum/2
}