Go 占位符

说明代码

本文部分示例代码基于以下代码执行

1
2
3
4
5
6
7
8
9
10
11
type User struct {
name string
age int
man bool
}

var stolen = User{
name: "stolen",
age: 18,
man: true,
}

普通占位符

占位符 说明 举例 输出
%v 相应值的默认格式 Printf("%v", stolen) {stolen 18 true}
%+v 打印结构体时会添加字段名 Printf("%+v", stolen) {name:stolen age:18 man:true}
%#v 相应类型的 Go 语言表达方式 Printf("%#v", stolen) main.User{name:"stolen", age:18, man:true}
%T 相应值的类型的 Go 语法表示 Printf("%T", stolen) main.User
%% 取消对 % 的转译 Printf("%%") %

布尔占位符

占位符 说明 举例 输出
%t 对布尔值的格式化输出,值为 true 或 false Printf("%t", stolen.man) true

整数占位符

占位符 说明 举例 输出
%b 二进制表示 Printf("%b", stolen.age) 10010
%#b 二进制表示,开头有二进制标识 0b Printf("%#b", stolen.age) 0b10010
%c 相应Unicode码点所表示的字符 Printf("%c", 20013)
%d 十进制表示 Printf("%d", stolen.age) 18
%o 八进制表示 Printf("%o", stolen.age) 22
%#o 八进制表示,开头有八进制标识 0 Printf("%#o", stolen.age) 022
%q 单引号围绕的字符字面值,由Go语法安全地转义 Printf("%q", 20013) '中'
%x 十六进制表示,字母形式为小写 a-f Printf("%x", stolen.age) 12
%#x 十六进制表示,字母形式为小写 a-f,开头有十六进制标识 0x Printf("%#x", stolen.age) 0x12
%X 十六进制表示,字母形式为小写 A-F Printf("%X", stolen.age) 12
%#X 十六进制表示,字母形式为小写 A-F,开头有十六进制标识 0X Printf("%#X", stolen.age) 0X12
%U Unicode格式:U+1234,等同于 U+%04X Printf("%U", 0x4E2D) U+4E2D

浮点占位符

占位符 说明 举例 输出
%b 指数为二的幂的科学计数法,例如1.0的值为 4503599627370496 * 2 ^ -52 Printf("%b", 1.0) 4503599627370496p-52
%e 科学计数法,输出显示为小e Printf("%e", 120.0) 1.200000e+02
%E 科学计数法,输出显示为大E Printf("%E", 120.0) 1.200000E+02
%f 以值的形式显示小数 Printf("%f", 120.0) 120.000000
%g 根据形势选择 %e 或 %f Printf("%g %g", 120.0,1200000.0) 120 1.2e+06
%G 根据形势选择 %E 或 %f Printf("%G %G", 120.0,1200000.0) 120 1.2E+06

字符串与字符切片

占位符 说明 举例 输出
%s 输出字符串表示(string类型或[]byte) Printf("%s %s", []byte(stolen.name), stolen.name) stolen stolen
%q 双引号围绕的字符串 Printf("%q", stolen.name) "stolen"
%x 十六进制, 小写字母, 每字节两个字符 Printf("%x", stolen.name) 73746f6c656e
%X 十六进制, 大写字母, 每字节两个字符 Printf("%X", []byte(stolen.name)) 73746F6C656E

指针

占位符 说明 举例 输出
%p 指针的值 Printf("%p", &stolen) 0x119ade0

参考文章: