首页 > 后端开发 > Golang > 正文

Golang函数返回错误值处理完整示例

P粉602998670
发布: 2025-09-09 11:39:01
原创
378人浏览过
Go语言通过返回error类型显式处理错误,如divide函数在除数为0时返回fmt.Errorf错误;调用时需检查err是否为nil,若自定义DivideError类型可携带更多错误信息,结合errors.As和%w包装实现高效错误判断与链式处理。

golang函数返回错误值处理完整示例

在Go语言中,错误处理是函数设计的重要部分。Go通过返回

error
登录后复制
类型来表示操作是否成功,而不是使用异常机制。下面是一个完整的示例,展示如何定义函数、返回错误以及在调用端进行处理。

定义可能出错的函数

假设我们要实现一个除法函数,它在除数为0时返回错误。

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, fmt.Errorf("cannot divide by zero")
    }
    return a / b, nil
}
登录后复制

这个函数返回两个值:结果和一个

error
登录后复制
。如果
b
登录后复制
为0,使用
fmt.Errorf
登录后复制
创建一个带有描述信息的错误。正常情况下返回计算结果和
nil
登录后复制
表示无错误。

调用函数并处理错误

调用

divide
登录后复制
时,必须检查第二个返回值是否为
nil
登录后复制
来判断是否出错。

立即学习go语言免费学习笔记(深入)”;

result, err := divide(10, 2)
if err != nil {
    fmt.Println("Error:", err)
    return
}
fmt.Printf("Result: %.2f\n", result)
登录后复制

这是标准的错误处理模式。如果

err
登录后复制
不为
nil
登录后复制
,说明发生了错误,应进行相应处理(如打印、记录日志或提前返回)。只有在
err
登录后复制
nil
登录后复制
时才使用返回的结果。

Flawless AI
Flawless AI

好莱坞2.0,电影制作领域的生成式AI工具

Flawless AI 32
查看详情 Flawless AI

自定义错误类型

对于更复杂的场景,可以定义自己的错误类型,实现

error
登录后复制
接口的
Error()
登录后复制
方法。

type DivideError struct {
    x, y float64
}

func (e *DivideError) Error() string {
    return fmt.Sprintf("division error: divide %.2f by %.2f", e.x, e.y)
}

func safeDivide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, &DivideError{x: a, y: b}
    }
    return a / b, nil
}
登录后复制

这样可以在错误中携带更多信息。调用方可以通过类型断言判断具体错误类型:

result, err := safeDivide(5, 0)
if err != nil {
    if divErr, ok := err.(*DivideError); ok {
        fmt.Println("Custom error:", divErr.Error())
    } else {
        fmt.Println("Unknown error:", err)
    }
    return
}
登录后复制

常见错误处理技巧

实际开发中,错误处理可以结合以下方式:

  • 使用
    errors.Is
    登录后复制
    errors.As
    登录后复制
    (Go 1.13+)进行错误比较和类型提取
  • 在错误链中包装原始错误,使用
    fmt.Errorf("...: %w", err)
    登录后复制
  • 在关键路径上尽早返回错误,避免嵌套

例如:

_, err := divide(10, 0)
if err != nil {
    return fmt.Errorf("operation failed: %w", err)
}
登录后复制

基本上就这些。Go的错误处理强调显式检查和清晰流程,虽然代码略多,但逻辑更透明,易于维护。

以上就是Golang函数返回错误值处理完整示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号