Go 格式化动词
Printf() 的格式化动词
Go 提供了几种可以与 Printf() 函数一起使用的格式化动词。
通用格式化动词
以下动词可用于所有数据类型:
| 动词 | 描述 |
|---|---|
| %v | 以默认格式打印值。 |
| %#v | 以 Go 语法格式打印值。 |
| %T | 打印值的类型。 |
| %% | 打印 % 符号。 |
实例
package main
import ("fmt")
func main() {
var i = 15.5
var txt = "Hello World!"
fmt.Printf("%v\n", i)
fmt.Printf("%#v\n", i)
fmt.Printf("%v%%\n", i)
fmt.Printf("%T\n", i)
fmt.Printf("%v\n", txt)
fmt.Printf("%#v\n", txt)
fmt.Printf("%T\n", txt)
}
结果:
15.5 15.5 15.5% float64 Hello World! "Hello World!" string
整数格式化动词
以下动词可以与整数数据类型一起使用:
| 动词 | 描述 |
|---|---|
| %b | 二进制 |
| %d | 十进制 |
| %+d | 十进制,并始终显示符号 |
| %o | 八进制 |
| %O | 八进制,前缀为 0o |
| %x | 十六进制,小写 |
| %X | 十六进制,大写 |
| %#x | 十六进制,前缀为 0x |
| %4d | 用空格填充(宽度为 4,右对齐) |
| %-4d | 用空格填充(宽度为 4,左对齐) |
| %04d | 用零填充(宽度为 4) |
实例
package main
import ("fmt")
func main() {
var i = 15
fmt.Printf("%b\n", i)
fmt.Printf("%d\n", i)
fmt.Printf("%+d\n", i)
fmt.Printf("%o\n", i)
fmt.Printf("%O\n", i)
fmt.Printf("%x\n", i)
fmt.Printf("%X\n", i)
fmt.Printf("%#x\n", i)
fmt.Printf("%4d\n", i)
fmt.Printf("%-4d\n", i)
fmt.Printf("%04d\n", i)
}
结果:
1111 15 +15 17 0o17 f F 0xf 15 15 0015
字符串格式化动词
以下动词可以与字符串数据类型一起使用:
| 动词 | 描述 |
|---|---|
| %s | 将值打印为普通字符串。 |
| %q | 将值打印为带双引号的字符串。 |
| %8s | 将值打印为普通字符串(宽度为 8,右对齐)。 |
| %-8s | 将值打印为普通字符串(宽度为 8,左对齐)。 |
| %x | 将值打印为字节值的十六进制转储。 |
| % x | 将值打印为带空格的十六进制转储。 |
实例
package main
import ("fmt")
func main() {
var txt = "Hello"
fmt.Printf("%s\n", txt)
fmt.Printf("%q\n", txt)
fmt.Printf("%8s\n", txt)
fmt.Printf("%-8s\n", txt)
fmt.Printf("%x\n", txt)
fmt.Printf("% x\n", txt)
}
结果:
Hello "Hello" Hello Hello 48656c6c6f 48 65 6c 6c 6f
布尔格式化动词
以下动词可以与布尔数据类型一起使用:
| 动词 | 描述 |
|---|---|
| %t | 以 true 或 false 格式打印布尔运算符的值(与使用 %v 相同)。 |
实例
package main
import ("fmt")
func main() {
var i = true
var j = false
fmt.Printf("%t\n", i)
fmt.Printf("%t\n", j)
}
结果:
true false
浮点格式化动词
以下动词可与 float 数据类型一起使用:
| 动词 | 描述 |
|---|---|
| %e | 使用 'e' 作为指数的科学计数法。 |
| %f | 小数点,没有指数。 |
| %.2f | 默认宽度,精度为 2。 |
| %6.2f | 宽度为 6,精度为 2。 |
| %g | 根据需要显示指数,仅显示必要的数字。 |
实例
package main
import ("fmt")
func main() {
var i = 3.141
fmt.Printf("%e\n", i)
fmt.Printf("%f\n", i)
fmt.Printf("%.2f\n", i)
fmt.Printf("%6.2f\n", i)
fmt.Printf("%g\n", i)
}
结果:
3.141000e+00 3.141000 3.14 3.14 3.141