Golang 第五章 3.多返回值

  • By v2ray节点

  • 2026-03-26 16:38:32

  • 评论

Go 函数可以 返回多个值,这是 Go 相比其他语言的一个重要特性。



示例:交换两个字符串

func swap(x, y string) (string, string) {
    return y, x
}

a, b := swap("hello", "world")
fmt.Println(a, b) // world hello

函数声明 (string, string) → 两个返回值
调用时可以 同时接收多个返回值



示例:函数返回值和错误

Go 常用模式:函数返回值 + 错误对象

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, fmt.Errorf("除数不能为零")
    }
    return a / b, nil
}

result, err := divide(10, 2)
if err != nil {
    fmt.Println(err)
} else {
    fmt.Println(result) // 5
}

Go 不使用异常,而是通过返回值处理错误



忽略返回值

如果不需要某个返回值,可以用 _ 忽略:

_, err := divide(10, 0)
if err != nil {
    fmt.Println(err)
}

_ 表示丢弃该值



返回值命名

函数可以给返回值命名,方便引用:

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}

a, b := split(17)
fmt.Println(a, b) // 7 10

返回值 x, y 成为局部变量

return 不带参数 → 自动返回命名值



多返回值的组合使用

func minMax(nums []int) (min, max int) {
    min, max = nums[0], nums[0]
    for _, n := range nums[1:] {
        if n < min {
            min = n
        }
        if n > max {
            max = n
        }
    }
    return
}

nums := []int{3, 7, 1, 9, 4}
minVal, maxVal := minMax(nums)
fmt.Println(minVal, maxVal) // 1 9

同时返回最小值和最大值
多返回值使函数调用更简洁



常见使用场景

  1. 返回值 + 错误(最常用)
  2. 返回多个结果(如 min/max、坐标、交换)
  3. 忽略部分返回值 使用 _
v2ray节点购买