Go 语言支持函数返回多个值,这一特性在实际开发中非常常见,尤其用于错误处理。
func 函数名(参数列表) (返回值1类型, 返回值2类型, ...) {
// 函数体
return 值1, 值2, ...
}
func divide(a, b int) (int, int) {
return a / b, a % b
}
q, r := divide(10, 3)
fmt.Println("商:", q, "余数:", r)
输出:
商: 3 余数: 1
Go 没有异常机制,采用 返回值 + error
的方式处理错误,这是多返回值的典型用法。
func safeDivide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为0")
}
return a / b, nil
}
result, err := safeDivide(10, 0)
if err != nil {
fmt.Println("出错:", err)
} else {
fmt.Println("结果:", result)
}
Go 支持为返回值命名,适合函数逻辑较复杂时提高可读性:
func swap(a, b int) (x, y int) {
x = b
y = a
return // 省略了 return 后的变量
}
_
)当你只关心部分返回值时,可以用 _
忽略其他值:
_, remainder := divide(10, 3)
fmt.Println("只看余数:", remainder)
data, err := os.ReadFile("data.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data))
resp, err := http.Get("https://example.com")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
场景 | 建议做法 |
错误处理 | 返回 (值, error) |
成对值 | 使用 (value1, value2) 明确区分 |
无用值 | 使用 _ 忽略 |
结构清晰 | 使用命名返回值提升可读性 |
error
实现显式错误控制;return
使函数更清晰;_
忽略无用值,避免不必要变量。