golang 中 printf 占位符详解

通用占位符

在Go中,最常用的占位符是%v,它可以用于打印任何类型的数据。当你不确定该使用哪个占位符时,可以尝试使用%v,它会自动根据变量的类型选择适当的格式进行打印。

name := "Alice"
age := 25
fmt.Printf("name: %v, age: %v\n", name, age)

输出:

name: Alice, age: 25

整数占位符

Go中常用的整数占位符包括:

  • %d:十进制格式
  • %b:二进制格式
  • %o:八进制格式
  • %x%X:十六进制格式

这些占位符可以用于打印不同进制的整数:

num := 42
fmt.Printf("%d %b %o %x %X\n", num, num, num, num, num)

输出:

42 101010 52 2a 2A

浮点数占位符

Go中常用的浮点数占位符包括:

  • %f:默认格式,保留6位小数
  • %e%E:科学计数法格式
  • %g%G:自动选择%f或%e/%E格式

这些占位符可以用于打印不同格式的浮点数:

pi := 3.14159265358979323846
fmt.Printf("%f\n", pi)
fmt.Printf("%.2f\n", pi)
fmt.Printf("%e\n", pi)
fmt.Printf("%.3E\n", pi)
fmt.Printf("%g\n", pi)

输出:

3.141593
3.14
3.141593e+00
3.142E+00
3.141592653589793

字符串占位符

Go中常用的字符串占位符是%s,它可以用于打印字符串:

name := "Alice"
fmt.Printf("name: %s\n", name)

输出:

makefile
name: Alice

布尔占位符

Go中的布尔类型可以用%t占位符进行打印:

isGo := true
fmt.Printf("isGo: %t\n", isGo)

输出:

vbnet
isGo: true

指针占位符

在Go中,可以使用%p占位符打印指针地址:

num := 42
fmt.Printf("address of num: %p\n", &num)

输出:

css
address of num: 0xc0000120a0

宽度和精度

在Go中,可以使用占位符的宽度和精度来控制打印的格式。

宽度

宽度用于控制打印的最小字符数。如果要打印的字符串长度小于指定的宽度,则在打印的字符串前面添加空格。如果要打印的字符串长度大于指定的宽度,则按照字符串的实际长度打印。宽度可以用数字表示。

name := "Alice"
fmt.Printf("|%5s|\n", name)
fmt.Printf("|%10s|\n", name)

输出:

|Alice|
|     Alice|

精度

精度用于控制浮点数、字符串等类型的输出精度。对于浮点数类型,精度表示小数点后的位数;对于字符串类型,精度表示打印的最大字符数。精度可以用.表示。

pi := 3.14159265358979323846
fmt.Printf("%.2f\n", pi)

name := "Alice"
fmt.Printf("%.3s\n", name)

输出:

3.14
Ali

宽度和精度组合使用

宽度和精度可以组合使用,用于控制打印的格式。在占位符中,宽度在精度前面。

pi := 3.14159265358979323846
fmt.Printf("|%8.2f|\n", pi)

name := "Alice"
fmt.Printf("|%.4s|\n", name)
fmt.Printf("|%10.5s|\n", name)

输出:

|    3.14|
|Alic|
|     Alice|

其他占位符

除了上面介绍的常用占位符之外,Go还提供了一些其他占位符,用于打印不同类型的数据:

  • %c:打印字符
  • %q:打印带有双引号的字符串
  • %U:打印Unicode格式
  • %T:打印变量的类型
ch := 'a'
fmt.Printf("%c\n", ch)
fmt.Printf("%q\n", "Hello, world!")
fmt.Printf("%U\n", '
最后修改:2023 年 08 月 27 日
如果觉得我的文章对你有用,请随意赞赏