0

0

Golang格式化输出占位符完整说明

P粉602998670

P粉602998670

发布时间:2026-01-06 16:32:55

|

473人浏览过

|

来源于php中文网

原创

Go fmt占位符应按类型分组记忆:通用%v/%+v/%#v区别在详细程度;数字%d/%x/%f/%e须对号入座;字符串%s/%q/%x注意nil和编码;修饰符宽度精度需规范组合,避免panic。

golang格式化输出占位符完整说明

Go 的 fmt 包占位符不是“记不住”,而是没理清分类逻辑——按类型分组记忆,比死背 %v %d %s 有效得多。

基础通用占位符:%v%+v%#v 怎么选?

这三个是调试和日志最常用的,区别不在“输出什么”,而在“输出多详细”:

  • %v:默认格式,结构体只输出字段值,不带字段名
  • %+v:带字段名,适合快速定位结构体内容,比如
    fmt.Printf("%+v", struct{A int; B string}{1, "x"}) // {A:1 B:"x"}
  • %#v:输出 Go 语法可复现的字面量形式,含类型信息,适合生成测试数据或反射调试

注意:%vnil 接口、nil 切片等输出 ,但不会 panic;而 %s 遇到 nil []byte 会 panic。

数字类型必须对号入座:%d%x%f%e 各管什么?

整数、浮点、十六进制不能混用,否则结果错乱或 panic:

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

  • %d:有符号十进制整数(int, int8 等),uint 类型也兼容
  • %x:小写十六进制(0xff),%X 是大写(0xFF);只接受整数,传 float64 会 panic
  • %f:十进制浮点,如 123.450000;默认 6 位小数,可用 %.2f 控制精度
  • %e%E:科学计数法,%e 输出 1.234500e+02%E1.234500E+02

特别注意:%dfloat64(3.14) 会截断为 3,但这是隐式转换,不报错;而 %fint(5) 会自动转成 5.000000,Go 允许这种宽泛匹配。

阿里云-虚拟数字人
阿里云-虚拟数字人

阿里云-虚拟数字人是什么? ...

下载

字符串与字节切片:%s%q%x 容易踩的坑

%s 看似简单,实则边界敏感:

  • %s:要求参数是 string[]byte;传 nil []byte 会 panic,但 nil string 是合法的(输出空字符串)
  • %q:加双引号 + 转义,适合日志中安全输出用户输入,比如
    fmt.Printf("%q", "a\nb") // "a\nb"
  • %x[]bytestring 输出十六进制字符串(无空格),% x(中间有空格)才加空格分隔

别用 %s 打印非 UTF-8 字节序列——它不会报错,但可能输出乱码或截断;需要原始字节请用 %x%q

宽度、精度、标志位这些修饰符怎么组合?

修饰符不是可选技巧,而是控制输出一致性的刚需,尤其在对齐日志或生成固定宽表格时:

  • 宽度(如 %5d):右对齐,不足补空格;%-5d 左对齐
  • 精度(如 %.2f):对浮点是小数位数,对字符串是最大输出长度(%.3s 截取前 3 字符)
  • %06d:数字补零对齐,42000042;但 %06s 无效(字符串不补零)
  • %+d:强制显示正负号,+42% d(空格)对正数加空格、负数加负号,用于对齐正负输出

组合示例:

fmt.Printf("|%6.2f|%6s|\n", 3.14159, "hi") // |  3.14|    hi|
。注意:宽度和精度顺序不能颠倒,%.2f 合法,.2%f 语法错误。

真正难的不是记住所有占位符,而是理解哪些组合在 runtime 会 panic、哪些只是静默截断、哪些依赖参数实际类型——比如 %duintptr 在 32 位系统和 64 位系统行为不同,%v 却始终安全。线上服务里,宁可用 %v 或显式类型转换,也别赌隐式行为。

相关专题

更多
golang如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

177

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

226

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

336

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

208

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

388

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

194

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

189

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

191

2025.06.17

java学习网站推荐汇总
java学习网站推荐汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.08

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.5万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

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

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