在 Go 语言中,fmt 包提供了丰富的格式化输出函数,其中最常用的是 Printf。Printf 函数支持多种格式化动词,用于将变量格式化为字符串,并输出到标准输出。下面详细介绍 Printf 函数的用法和常见的格式化动词。
fmt
Printf
Printf 函数的基本用法如下:
fmt.Printf(format string, a ...interface{}) (n int, err error)
format
a
package main import "fmt" func main() { name := "Alice" age := 25 fmt.Printf("Name: %s, Age: %d\n", name, age) }
%v
%+v
%#v
%T
%%
%t
true
false
%b
%c
%d
%o
%O
%x
%X
%U
U+
%e
%E
%f
%F
%g
%G
%s
%q
%p
0x
package main import "fmt" func main() { // 通用动词 fmt.Printf("%v\n", 123) // 123 fmt.Printf("%+v\n", struct{ X, Y int }{1, 2}) // {X:1 Y:2} fmt.Printf("%#v\n", struct{ X, Y int }{1, 2}) // struct { X int; Y int }{X:1, Y:2} fmt.Printf("%T\n", 123) // int fmt.Printf("%%\n") // % // 布尔值动词 fmt.Printf("%t\n", true) // true // 整数动词 fmt.Printf("%b\n", 255) // 11111111 fmt.Printf("%c\n", 65) // A fmt.Printf("%d\n", 255) // 255 fmt.Printf("%o\n", 255) // 377 fmt.Printf("%O\n", 255) // 0o377 fmt.Printf("%x\n", 255) // ff fmt.Printf("%X\n", 255) // FF fmt.Printf("%U\n", '世') // U+4E16 // 浮点数和复数动词 fmt.Printf("%e\n", 123.456) // 1.234560e+02 fmt.Printf("%E\n", 123.456) // 1.234560E+02 fmt.Printf("%f\n", 123.456) // 123.456000 fmt.Printf("%F\n", 123.456) // 123.456000 fmt.Printf("%g\n", 123.456) // 123.456 fmt.Printf("%G\n", 123.456) // 123.456 // 字符串和字节切片动词 fmt.Printf("%s\n", "Hello, Go!") // Hello, Go! fmt.Printf("%q\n", "Hello, Go!") // "Hello, Go!" fmt.Printf("%x\n", "Hello") // 48656c6c6f fmt.Printf("%X\n", "Hello") // 48656C6C6F // 指针动词 fmt.Printf("%p\n", &struct{ X, Y int }{1, 2}) // 0x<address> }
可以在格式化动词中指定宽度和精度,用于控制输出的对齐和精度。
package main import "fmt" func main() { n := 123.456 // 宽度控制 fmt.Printf("%10.2f\n", n) // 123.46 (宽度为10,小数点后保留2位) fmt.Printf("%10s\n", "Go") // Go (宽度为10,右对齐) // 精度控制 fmt.Printf("%.2f\n", n) // 123.46 (小数点后保留2位) fmt.Printf("%.5s\n", "Hello, Go!") // Hello (字符串截取前5个字符) // 宽度和精度一起控制 fmt.Printf("%10.5s\n", "Hello, Go!") // Hello (宽度为10,截取前5个字符) }
Go 语言的 Printf 函数及其格式化动词为格式化输出提供了丰富的功能。通过掌握各种格式化动词及其宽度和精度控制,可以灵活地将变量格式化为所需的字符串形式。
原文链接:codingdict.net