0

0

如何使用Go fmt错误格式化输出_Go fmt Error格式输出技巧

P粉602998670

P粉602998670

发布时间:2025-12-26 09:58:36

|

142人浏览过

|

来源于php中文网

原创

Go 错误处理应使用 fmt.Errorf(推荐 %w 包装保留错误链)、%v 打印错误、%q 安全插值字符串,并统一用 log 包而非 fmt 输出错误,确保可调试、类型安全且符合 Go 习惯。

如何使用go fmt错误格式化输出_go fmt error格式输出技巧

Go 的 fmt 包本身不提供“错误格式化输出”的专用函数,但 Go 语言约定使用 error 接口和 fmt.Errorffmt.Sprint/Printf 等组合来清晰、一致地输出错误信息。关键不是“错误格式化”,而是“如何按 Go 习惯正确构造和展示错误”。

用 fmt.Errorf 构建带上下文的错误

推荐用 fmt.Errorf(尤其是带 %w 动词)包装底层错误,保留原始错误链,便于调试和判断类型:

  • ✅ 推荐(保留错误链):
    return fmt.Errorf("failed to open config file: %w", os.Open("config.json"))
  • ❌ 避免(丢失原始错误):
    return errors.New("failed to open config file")fmt.Sprintf("failed to open config file: %v", err)

打印错误时优先用 %v 和 %+v

在日志或调试输出中显示错误,应根据需求选择格式动词:

  • %v:显示错误的默认文本(最常用,简洁)
  • %+v:显示完整错误(需错误实现了 fmt.Formatter,如 github.com/pkg/errors 或 Go 1.13+ 的 wrapped error)
  • %s:仅调用 err.Error(),不推荐用于调试,因丢失结构信息

示例:
log.Printf("error occurred: %v", err) —— 清晰、标准、兼容所有 error 类型

Python v2.4 中文手册 chm
Python v2.4 中文手册 chm

Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。

下载

避免在错误消息里拼接裸字符串

不要手动用 +fmt.Sprintf 拼接路径、变量等敏感内容,易出错且不安全:

  • ❌ 不安全(可能含空格、特殊字符):
    fmt.Sprintf("failed to read %s: %s", filename, err.Error())
  • ✅ 更健壮(自动转义、类型安全):
    fmt.Errorf("failed to read %q: %w", filename, err)%q 安全引号包裹字符串)

日志中区分错误与普通输出

生产环境别混用 fmt.Printlnlog.Printf 输出错误。统一用结构化日志库(如 log/slog)或至少用 log 包:

  • log.Printf("warning: %v", warnErr)
  • log.Printf("error: %v", err)(可配合 log.SetPrefix("ERR:")
  • 避免:fmt.Printf("ERROR: %v\n", err) —— 不带时间戳、无级别标识、不易过滤

基本上就这些。核心是:用 fmt.Errorf 包装、用 %v 打印、用 %q 安全插值、用 log 而非 fmt 做终端输出。不复杂但容易忽略。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

400

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

528

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

306

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

67

2025.09.10

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.10.25

printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

72

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

274

2023.11.28

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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