跳到主要内容

函数返回值

多返回值

概念

  • 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
}