Golang格式化动词说明
在Golang中使用格式化动词时有些困惑,想请教几个问题:
- %v、%+v和%#v这三种通用格式有什么区别?在实际开发中应该如何选择?
- 对于整数类型,%d和%b分别输出什么格式?什么时候用%b比较合适?
- 字符串格式化中%q和%s的主要区别是什么?为什么有时候会看到字符串被加上引号?
- 浮点数格式化%f和%g在什么场景下使用?如何控制小数位数?
- 结构体类型使用%+v输出时,字段名会显示出来吗?
2 回复
Golang格式化动词用于格式化输出,常见的有:
%v:默认格式%+v:显示结构体字段名%#v:Go语法表示%T:变量类型%d:十进制整数%s:字符串%f:浮点数
用于fmt.Printf、Sprintf等函数。
更多关于Golang格式化动词说明的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang 的格式化动词用于 fmt 包中的函数(如 Printf、Sprintf 等),用于控制数据的输出格式。以下是常用动词及其说明:
通用动词
- %v:默认格式,适用于任何类型。
- %+v:类似
%v,但结构体字段会显示名称。 - %#v:Go 语法表示的值(例如,字符串带引号)。
- %T:值的类型。
- %%:字面百分号。
布尔值
- %t:输出
true或false。
整数
- %b:二进制。
- %d:十进制。
- %o:八进制。
- %x / %X:十六进制(小写/大写)。
- %c:对应 Unicode 码点的字符。
- %U:Unicode 格式(如
U+1234)。
浮点数与复数
- %f / %F:十进制浮点数。
- %e / %E:科学计数法(小写 e/大写 E)。
- %g / %G:根据情况选择
%f或%e(紧凑格式)。 - %x / %X:十六进制浮点数。
字符串与字节切片
- %s:直接输出字符串或字节切片。
- %q:带引号的字符串(转义特殊字符)。
- %x / %X:十六进制(小写/大写)。
指针
- %p:指针地址(十六进制)。
宽度与精度
可在动词前加数字控制格式:
- %5d:最小宽度 5(右对齐)。
- %-5d:左对齐。
- %05d:补零至宽度 5。
- %.2f:浮点数保留 2 位小数。
- %5.2f:宽度 5,精度 2。
示例代码
package main
import "fmt"
func main() {
n := 42
s := "hello"
f := 3.14159
fmt.Printf("整数:%d,字符串:%s,浮点数:%.2f\n", n, s, f)
fmt.Printf("类型:%T,十六进制:%x\n", n, n)
fmt.Printf("带字段名的结构体:%+v\n", struct{ Name string }{Name: "Go"})
}
输出:
整数:42,字符串:hello,浮点数:3.14
类型:int,十六进制:2a
带字段名的结构体:{Name:Go}
这些动词可灵活组合,满足不同格式化需求。

