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", '
此处评论已关闭