一文了解 Go fmt 标准库的常用占位符及其简单使用

2023-10-15 23:36:12 浏览数 (3)

占位符

通过占位符,可以指定格式进行输入或输出,以下为 fmt 标准库里的占位符:

  • 普通占位符

占位符

描述

举例

结果

%v

默认格式的值

fmt.Printf("%v", User{Name: "小明", Age: 18})

{小明 18}

% v

如果打印的是结构体,额外打印字段名

fmt.Printf("% v", User{Name: "小明", Age: 18})

{Name:小明 Age:18}

%#v

对应值的 Go 语法表示

fmt.Printf("%#v", User{Name: "小明", Age: 18})

main.User{Name:"小明", Age:18}

%T

对应值类型的 Go 语法表示

fmt.Printf("%T", User{Name: "小明", Age: 18})

main.User

%%

非占位符,而是字面上的 %

fmt.Printf("%%")

%

  • 布尔

占位符

描述

举例

结果

%t

对应值 true 或 false

fmt.Printf("%t", false)

false

  • 整数

占位符

描述

举例

结果

%b

二进制的形式

fmt.Printf("%b", 2)

10

%c

对应的Unicode码位表示的字符

fmt.Printf("%c", 65)

A

%d

十进制的形式

fmt.Printf("%d", 10)

10

]

十进制的形式,长度为5,长度不够用空格来补

fmt.Printf("]", 123)

__123,由于空格显示不出来,用下划线表示空格

%o

八进制的形式

fmt.Printf("%o", 10)

12

%O

前缀为0o的八进制的形式

fmt.Printf("%O", 10)

0o12

%q

使用 Go 语法安全转义的单引号字符文字

fmt.Printf("%q", 65)

'A'

%x

十六进制的形式,字母部分用小写字母 a-f 表示

fmt.Printf("%x", 12)

c

%X

十六进制的形式,字母部分用大写字母 A-F 表示

fmt.Printf("%X", 12)

C

%U

Unicode 格式

fmt.Printf("%U", 15)

U 000F

  • 浮点数

占位符

描述

举例

结果

%f

打印小数,默认的长度和小数,小数精度为 6 位

fmt.Printf("%f", 1.50000000001)

1.500000

_

长度为 5(整数和小数点以及小数加起来的长度),默认小数精度6位,长度不够则用空格来补

fmt.Printf("f", 0.1)

__0.100000,由于空格显示不出来,用下划线表示空格

%.3f

默认长度,小数精度为 3

fmt.Printf("%.3f", 0.1)

0.100

%7.3f

长度为 7(整数和小数点以及小数加起来的长度),小树精度为 3

fmt.Printf("%7.3f", 0.1)

__ 0.100,由于空格显示不出来,用下划线表示空格

  • 字符串和字节切片

占位符

描述

举例

结果

%s

输出 string 类型或 []byte 类型的字符串形式

fmt.Printf("%s, %s", "haha", []byte("haha"))

haha, haha

%q

加上双引号的字符串

fmt.Printf("%q", "haha")

"haha"

%x

十六进制的形式,字母用小写表示,每个字节两个字符

fmt.Printf("%x", "hello")

68656c6c6f

%X

十六进制的形式,字母用大写表示,每个字节两个字符

fmt.Printf("%X", "hello")

68656C6C6F

  • 切片

占位符

描述

举例

结果

%p

以16进制表示的第0个元素的地址,前缀为0x

fmt.Printf("%p", []int{1, 2, 3})

0xc000010120

  • 指针

占位符

描述

举例

结果

%p

16进制表示,前缀为0x

fmt.Printf("%p", &User{Name: "小明"})

0xc000008078

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

0 人点赞