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

上一篇下一篇

猜你喜欢

热点阅读