Golang的格式化输出

一.格式化说明符

通用占位符:
    %v	值的默认格式表示
    %+v	类似%v,但输出结构体时会添加字段名
    %#v	值的Go语法表示
    %T	打印值的类型
    %%	输出百分号

布尔型占位符:
    %t	接收bool类型值,打印true或false

整型占位符:
    %b	表示为二进制
    %c	该值对应的unicode码值
    %d	表示为十进制
    %o	表示为八进制
    %x	表示为十六进制,使用a-f
    %X	表示为十六进制,使用A-F
    %U	表示为Unicode格式:U+1234,等价于”U+%04X”
    %q	该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示

浮点数与复数占位符:
    %b	无小数部分、二进制指数的科学计数法,如-123456p-78
    %e	科学计数法,如-1234.456e+78
    %E	科学计数法,如-1234.456E+78
    %f	有小数部分但无指数部分,如123.456
    %F	等价于%f
    %g	根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
    %G	根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

字符串和[]byte占位符:
    %s	直接输出字符串或者[]byte
    %q	该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
    %x	每个字节用两字符十六进制数表示(使用a-f
    %X	每个字节用两字符十六进制数表示(使用A-F)

指针占位符:
    %p 表示为十六进制,并加上前导的0x

数值型宽度标识符占位符:
    %f	默认宽度,默认精度
    %9f	宽度9,默认精度
    %.2f	默认宽度,精度2
    %9.2f	宽度9,精度2
    %9.f	宽度9,精度0
    示例:
    n := 12.34
    fmt.Printf("%f
", n)
    fmt.Printf("%9f
", n)
    fmt.Printf("%.2f
", n)
    fmt.Printf("%9.2f
", n)
    fmt.Printf("%9.f
", n)

这里比较常用的是%v,我们可以看作是万能的格式符。

二.Golang中fmt包几种输出的区别

我们日常在使用fmt包的过程中,主要包含几种Print序列函数:Fprint、Fprintf、Fprintln、Sprint、Sprintf、Sprintln、Print、Printf、Println。
一般情况下,可以将Fprint、Fprintf、Fprintln归为一类,Sprint、Sprintf、Sprintln归为一类,Print、Printf、Println归为另一类。其中,Print、Printf、Println会嗲用相应的F开头的一类函数。

func Print(a ...interface{}) (n int, err error) {
    return Fprint(os.Stdout, a...)
}

Fprint、Fprintf、Fprintln函数的第一个参数接收一个io.Writer类型,会将内容输出到io.Writer中去,而Print、Printf、Println函数是将内容输出到标准输出中,因此直接调用F类函数做这件事,并将os.Stdout作为第一个参数传入。
Sprint、Sprintf、Sprintln是格式化内容为string类型,而不输出到某处。

result1 := fmt.Sprintln("studygolang.com", 2013)
result2 := fmt.Sprint("studygolang.com", 2013)

返回的result1的值为:studygolang.com 2013,返回的result2的值为:studygolang.com2013。这里起到了连接字符串的作用。

原文地址:https://www.cnblogs.com/yuhaohao/p/15385667.html