Go的格式化占位符
格式化占位符
占位符是在字符串中的一个特殊存在,用于在程序层面格式化数据;同一个对象,在使用不同的占位符会有不一样的输出。
下面是一个例子:
1 | |
%s表示格式化占位符,将Go字符串填充到%s位置。当然占位符有很多类型,%s只是其中一种,还有其他类型。
函数支持
在Go语言中,标准包fmt有很多格式化的工具函数,函数名末尾通常以f结尾,列举如下:
fmt.Printf格式化字符串并打印到终端;fmt.Sprintf格式化字符串并返回了;fmt.Sscanf从子复查u年中解析占位符的对应位置数据;fmt.Fscanf从io.Reader类型中读取数据并解析占位符的对应位置数据,用于读取文件、终端;fmt.Fprintf将格式化的字符串数据输出到io.Writer类型中,用于输出文件;fmt.Errorf格式化方式创建一个错误类型信息。
占位符类型
示例
先创建一个数据对象,用于打印
1 | |
通用占位符
%v
%v以及变种该占位符能输出所有类型的占位符数据,%T用于打印变量的类型
%v%+v%#v
%v:用于获取该数据的值,如果是结构体,则输出所有字段的值。
1 | |
%+v:获取数据的值,如果是结构体,会连同字段名一起输出。
1 | |
%#v:获取数据的值,如果是结构体,会连同结构体名和字段名一起输出。
1 | |
%T
%T:用于获取数据类型
1 | |
布尔占位符
%t,输出true或false
1 | |
整数占位符
整数占位符包括了二进制、八进制、十进制以及Unicode码等的占位符。
%b
该占位符会输出数据所对应的二进制,b对应 binary
1 | |
%o
该占位符会输出数据所对应的八进制,o对应octonary
1 | |
如果需要打印0打头的八进制,那需要使用%#o
1 | |
%d
该占位符会输出数据所对应的十进制,d对应decimal
1 | |
除此之外,还可以指定最小宽度,以5为例子,格式如下:
| 占位符 | 说明 |
|---|---|
| %5d | 最小宽度为5,右对齐,左边留白 |
| %-5d | 左对齐,右边留白 |
| %05d | 数字位数不足5位时,左边补零 |
示例:
1 | |
%x
该占位符会输出数据所对应的十六进制,字母形式为小些 a -f ,%#x输出带0x开头。
1 | |
%X
该占位符会输出数据所对应的十六进制,字母形式为小些 A-F ,%#X输出带0x开头。
1 | |
%c
该占位符输出数据所对应的字符,大多数用于Unicode转字符
1 | |
%q
同 %c 类似,都是Unicode 码转字符,只是结果多了单引号。
1 | |
浮点数
%f
该占位符用于展示数据所对应的浮点数,默认保留6位小数点。
1 | |
与十进制数一样,有拓展用法
%.2f表示保留2位小数,也可以加入最小宽度:
%9.2f宽度最小为9,包含小数点和小数位,精度为2%9.f或%9f,宽度最小为9
1 | |
%g
该占位符以最少的数字来表示
1 | |
扩展用法,可以使用最多x位数组,例如:%.3g, 表示最多3位数字来代表
%e
该占位符用于展示数据岁对应的科学计数法,默认是展示6位,其余使用科学计数法展示
1 | |
字符串和字节占位符
%s
该占位符用于展示字符串和字符切片
1 | |
下面是一些拓展用法,以5为例
| 占位符 | 说明 |
|---|---|
| %5s | 最小宽度为5 |
| %-5s | 最小宽度为5(左对齐) |
| %.5s | 最大宽度为5 |
| %5.7s | 最小宽度为5,最大宽度为7 |
| %-5.7s | 最小宽度为5,最大宽度为7(左对齐) |
| %5.3s | 如果宽度大于3,则截断 |
| %05s | 如果宽度小于5,就会在字符串前面补零 |
以上就是在Go中比较常用的一些占位符,如果需要更加惊喜的控制输出,请访问官方文档查询用法。