本文来源:Go by example。
Golang的格式化输出 和 C语言的标准输出基本一样,但是增加了一些针对Golang语言的特有数据结构的格式化输出方式。
一下就是实例:
package main import "fmt" //一定不要忘了 type point struct{ x,y int } func test(i , j int) int{ return i+j;} func main(){ p := point{1,2} fmt.Printf("%d ",p) // {1 2} fmt.Printf("%+v ",p) // {x:1 y:2} fmt.Printf("%#v ",p) // main.point{x:1, y:2} //输出类型 fmt.Printf("%T ",p) // main.point //输出函数签名 fmt.Printf("%T ",test) //func(int ,int) int //输出bool值 flag := true fmt.Printf("%t ",flag) // true //尝试将一个字符串作为参数来输出bool值,不要尝试这样做 fmt.Printf("%t ","true") //%!t(string=true) //输出十进制形式输出 fmt.Printf("%d ",123) // 123 //输出一个字符,参数对应ASCII码 fmt.Printf("%c ",98) // b //输出一个整数的二进制形式的值 fmt.Printf("%b ",98) // 1100010 //输出一个字符的二进制形式的值 fmt.Printf("%b ",'b') // 1100010 //如果参数是数字,则以十六进制形式输出 fmt.Printf("%x ",456) // 1c8 //如果参数是字符串,则打印字符串的每一个字符的ASCII码 fmt.Printf("%x ","hex this") // 6865782074686973 //浮点数形式输出,注意小数位数为6位 fmt.Printf("%f ",78.53) // 78.530000 //注意这里前后不对应,不会报错,但是不会自动转换 fmt.Printf("%d ",78.53) // %!d(float64=78.53) //科学计数法的形式,注意参数要为小数,不为小数,可以乘1.0 fmt.Printf("%e ",123400000000.0) //1.234000e+11 注意参数为小数 //科学计数法的形式,注意参数要为小数,不为小数,可以乘1.0 fmt.Printf("%E ",123000000000.0) //1.234000E+11 //输出字符串 fmt.Printf("%s ",""ddadjfaskdafjasfsaf") //"ddadjfaskdafjasfsaf //保留字符串两端的双引号 fmt.Printf("%q ",""dddddddd"") // ""dddddddd"" //输出指针(地址)的值 fmt.Printf("%p ",&p) //0xc420012090 //最小宽度为6,默认右对齐,不足6位时,空格补全,超过6位时,不会截断 fmt.Printf("|%6d|%6d| ",12,1234567) // | 12|1234567| //最小6个宽度(包含小数点),2位小数,超过6位时,不会截断 fmt.Printf("|%6.2f|%6.2f| ",12,222.333) // |%!f(int= 12)|222.33| //使用 - 表示左对齐 fmt.Printf("|%-6.2f|%-6.2f| ",12.2,3.33) //|12.20 |3.33 | //最小6个宽度,右对齐,不足6个时,空格补齐,超过6位时,不会截断 fmt.Printf("|%6s|%6s| ","foo","abcdefgg") //| foo|abcdefgg| ////最小6个宽度,右对齐,不足6个时,空格补齐,超过6位时,不会截断 fmt.Printf("|%-6s|%-6s| ","foo","abcdeefgth") //|foo |abcdeefgth| //不会输出内容,相反,会将内容以字符串的形式返回 s:= fmt.Sprintf("a %s","string") fmt.Println(s) //a string }