Go语言之格式化占位符

格式化的输入与输出,都需要使用到格式化占位符,Go 语言的格式化占位符大概可分为普通占位符、 布尔占位符、整数占位符、浮点数和 复数占位符、字符串与 字节切片占位符、指针占位符以及其它标记等

1、普通占位符

占位符说明示例结果
%v值的默认格式Printf(“%v”,”hello”)hello
%#v值的Go语法表示Printf(“%#v”,”hello”)“hello”
%T值的类型的Go语法表示Printf(“%T”,”hello”)string
%%字面上的百分号,并非值的占位符Printf(“%%”)%
%+v打印结构体时,会添加字段名Printf(“%+v”,abc){Name:”hello”}

2、布尔占位符

占位符说明示例结果
%ttrue 或 falsePrintf(“%t”, true)true

3、整数占位符

占位符说明示例结果
%b二进制表示Printf(“%b”, 10)1010
%c相应 Unicode 码点所表示的字符Printf(“%c”, 0x4E2D)
%d十进制表示Printf(“%d”, 10)10
%o八进制表示Printf(“%o”, 10)12
%q单引号围绕的字符字面值,由Go语法安全地转义Printf(“%q”, 0x4E2D)‘中’
%x十六进制表示,字母形式为小写 a-fPrintf(“%x”, 10)a
%X十六进制表示,字母形式为大写 A-FPrintf(“%X”, 10)A
%UUnicode格式:U+1234,等同于 “U+%04X”Printf(“%U”, 0x4E2D)U+4E2D

4、浮点数和复数的组成部分

占位符说明示例结果
%e科学计数法Printf(“%e”, 10.5)1.050000e+01
%E科学计数法Printf(“%E”, 10.5)1.050000E+01
%f有小数点而无指数Printf(“%f”, 10.5)10.500000
%g根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)Printf(“%f”, 10.50)10.5
%G根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)Printf(“%f”, 10.50)10.5
%b无小数部分的,指数为二的幂的科学计数法

注意:一般比较常用的就是%f

(1)、下面将浮点数保留两位小数并输出,如图:

运行结果如下:

(2)、下面例子表示保留三位小数打印输出,如图:

注意:golang的浮点数精度计算时按照四舍五入的规则来的

5、字符串与字节切片

占位符说明示例结果
%s输出字符串表示(string类型或[]byte)Printf(“%s”, []byte(“hello”))hello
%q双引号围绕的字符串,由Go语法安全地转义Printf(“%q”, “hello”)“hello”
%x十六进制,小写字母,每字节两个字符Printf(“%x”, “hello”)68656c6c6f
%X十六进制,大写字母,每字节两个字符Printf(“%X”, “hello”)68656C6C6F

下面例子表示格式化字符串,如图:

运行结果如下:

下面例子在上面基础上,设置了格式化宽度为20,如图:

运行结果中间空出了20个字符的长度,如下:

6、指针

占位符说明示例结果
%p十六进制表示,前缀 0xPrintf(“%p”, &hello)0xc0000140b0

下面例子打印切片的指针地址,如果不使用%p,无法看到指针地址,如图:

从打印结果可以看出,直接使用&打印的不是切片的内存地址,要使用%p才可以

格式化指定宽度

注意:每个格式化占位符都可以指定宽度的,比如%s、%d、%f等

1、下面例子是格式化的时候指定宽度,如图:

  • -10:表示指定格式化的内容宽度为10个字符,不足用空格补全,并左对齐
  • 20:指定宽度为20,不足用空格补全,右对齐

注:宽度是对应的后面的内容的,比如-10对应的是Name,实际是格式化出10个字符,然后Name占用了4个,那么剩余6个使用空格补全,并且空格在Name后面,因为”-“表示左对齐,如果不加”-“,那么表示右对齐,空格在左Name在右侧

2、除了指定宽度,也可以使用动态宽度的方式,使用星号(*),如图:

3、将默认情况下的空格使用”-“替换,如图:

  • -1:表示替换所有

标签