2025-11-01
Go
00

目录

第一部分 概述
第二部分 基础占位符一览
2.1 通用格式符
2.2 整数类型
2.3 浮点与科学计数法
2.4 字符串与字节
2.5 指针与类型
第三部分 格式控制修饰符(对齐、宽度、精度)
第四部分 Go 1.13 引入的 %w 错误包装
第五部分 调试技巧与建议
第六部分 占位符速查表

第一部分 概述

Go 语言中经常使用 fmt.Sprintf 进行字符串格式化,除了比较常用的 %v%s 外,还有一些其它占位符可以使用,本文主要介绍可用的占位符便于使用时进行速查。

第二部分 基础占位符一览

2.1 通用格式符

占位符说明示例输出
%v默认格式输出fmt.Sprintf("%v", 123)"123"
%+v结构体字段名和值{Name:Tom Age:18}
%#vGo语法表示(带类型)main.User{Name:"Tom", Age:18}
%T输出类型"int"
%%输出字面百分号 %"100%"

2.2 整数类型

占位符含义示例
%d十进制整数123
%b二进制表示1111011
%o八进制173
%x十六进制(小写)7b
%X十六进制(大写)7B
%c输出 Unicode 字符'A'
%UUnicode 编码形式U+0041

2.3 浮点与科学计数法

占位符说明示例输出
%f小数(默认6位)3.141593
%.2f保留2位小数3.14
%e科学计数法(小写e)3.141593e+00
%E科学计数法(大写E)3.141593E+00
%g自动选择 %f%e3.14

2.4 字符串与字节

占位符说明示例输出
%s普通字符串"hello"
%q带引号字符串(含转义)"\"hello\""
%x十六进制(每字节两位)"68656c6c6f"
% X十六进制并以空格分隔"68 65 6C 6C 6F"

2.5 指针与类型

占位符含义示例输出
%p指针地址(十六进制)0xc0000100a8

第三部分 格式控制修饰符(对齐、宽度、精度)

格式含义示例
%6d宽度6,右对齐" 123"
%-6d宽度6,左对齐"123 "
%06d左补零"000123"
%10.2f总宽度10,小数2位" 12.34"

第四部分 Go 1.13 引入的 %w 错误包装

%wGo 错误系统的关键改进。它允许在 fmt.Errorf 中包装底层错误,从而让上层错误保留原始信息。

示例:

go
baseErr := errors.New("数据库连接失败") err := fmt.Errorf("请求处理失败: %w", baseErr) if errors.Is(err, baseErr) { fmt.Println("底层错误匹配成功") }

输出:

请求处理失败: 数据库连接失败 底层错误匹配成功

注意

注意:一个 fmt.Errorf 调用中 只能包含一个 %w

第五部分 调试技巧与建议

场景推荐格式说明
输出简单信息%v常规错误描述
输出结构体字段%+v调试模式
打印类型信息%T动态类型检查
打印内存地址%p诊断指针问题
包装底层错误%wGo 错误链机制

第六部分 占位符速查表

分类占位符含义
通用%v, %+v, %#v, %T, %%值、类型、Go 表示、百分号
整数%d, %x, %o, %b, %c十进制、十六进制、八进制、二进制、字符
浮点%f, %e, %E, %g小数、科学计数法
字符串%s, %q, %x, % X普通、带引号、十六进制
指针%p地址
错误包装%w包装底层错误(仅限 fmt.Errorf
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:蒋固金

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!