Go 格式化输出fmt.Printf
2018-10-16 本文已影响0人
parker7
类似于C或其它语言里的printf函数,fmt.Printf函数对一些表达式产生格式化输出。该函数的首个参数是个格式字符串,指定后续参数被如何格式化。各个参数的格式取决于“转换字符”(conversion character),形式为百分号后跟一个字母。
# 部分转换字符
%d 十进制整数
%x, %o, %b 十六进制,八进制,二进制整数。
%f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00
%t 布尔:true或false
%c 字符(rune) (Unicode码点)
%s 字符串
%q 带双引号的字符串"abc"或带单引号的字符'c'
%v 变量的自然形式(natural format)
%T 变量的类型
%% 字面上的百分号标志(无操作数)
package main
import "fmt"
type User struct {
id int
Name string
Age int
}
var (
u = User{id: 1, Name: "pb", Age: 18}
)
func main() {
//十进制整数,十六进制,八进制,二进制整数
fmt.Printf("%d,%x,%o,%b\n",11,11,11,11) //11,b,13,1011
//浮点数
fmt.Printf("%f, %g, %e\n",3.1415926,3.141592653589793,3.141592653589793) //3.141593, 3.141592653589793, 3.141593e+00
//布尔
fmt.Printf("%t\n",true)//true
//字符
fmt.Printf("%c\n",98)// b
//变量的类型
fmt.Printf("%T\n","C")// string
fmt.Printf("%v\n", u) //{1 pb 18}
fmt.Printf("%+v\n", u) //{id:1 Name:pb Age:18}
fmt.Printf("%#v\n", u) //main.User{id:1, Name:"pb", Age:18}
//宽度为6,右对齐,不足6位时,空格补全,超过6位时,不会截断
fmt.Printf("%6d,%6d\n", 12, 1234567) // 12,1234567
//宽度为6,右对齐,不足6位时,空格补全,超过6位时,不会截断
fmt.Printf("%6s,%6s\n", "abd", "abcdefghijk") // abd,abcdefghijk
//宽度为6(包含小数点),2位小数,右对齐,不足6位时,整数部分空格补全,小数部分补零,超过6位时,小数部分四舍五入
fmt.Printf("%6.2f,%6.2f\n", 12.3, 123.4567) // 12.30,123.46
//与上面一样,- 表示左对齐
fmt.Printf("%-6.2f,%-6.2f\n", 12.2, 123.4567) //12.20 ,123.46
}
附录:
fmt-demo