本文來源: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\n",p) // {1 2} fmt.Printf("%+v\n",p) // {x:1 y:2} fmt.Printf("%#v\n",p) // main.point{x:1, y:2} //輸出類型 fmt.Printf("%T\n",p) // main.point //輸出函數簽名 fmt.Printf("%T\n",test) //func(int ,int) int //輸出bool值 flag := true fmt.Printf("%t\n",flag) // true //嘗試將一個字符串作為參數來輸出bool值,不要嘗試這樣做 fmt.Printf("%t\n","true") //%!t(string=true) //輸出十進制形式輸出 fmt.Printf("%d\n",123) // 123 //輸出一個字符,參數對應ASCII碼 fmt.Printf("%c\n",98) // b //輸出一個整數的二進制形式的值 fmt.Printf("%b\n",98) // 1100010 //輸出一個字符的二進制形式的值 fmt.Printf("%b\n",'b') // 1100010 //如果參數是數字,則以十六進制形式輸出 fmt.Printf("%x\n",456) // 1c8 //如果參數是字符串,則打印字符串的每一個字符的ASCII碼 fmt.Printf("%x\n","hex this") // 6865782074686973 //浮點數形式輸出,注意小數位數為6位 fmt.Printf("%f\n",78.53) // 78.530000 //注意這里前后不對應,不會報錯,但是不會自動轉換 fmt.Printf("%d\n",78.53) // %!d(float64=78.53) //科學計數法的形式,注意參數要為小數,不為小數,可以乘1.0 fmt.Printf("%e\n",123400000000.0) //1.234000e+11 注意參數為小數 //科學計數法的形式,注意參數要為小數,不為小數,可以乘1.0 fmt.Printf("%E\n",123000000000.0) //1.234000E+11 //輸出字符串 fmt.Printf("%s\n","\"ddadjfaskdafjasfsaf") //"ddadjfaskdafjasfsaf //保留字符串兩端的雙引號 fmt.Printf("%q\n","\"dddddddd\"") // "\"dddddddd\"" //輸出指針(地址)的值 fmt.Printf("%p\n",&p) //0xc420012090 //最小寬度為6,默認右對齊,不足6位時,空格補全,超過6位時,不會截斷 fmt.Printf("|%6d|%6d|\n",12,1234567) // | 12|1234567| //最小6個寬度(包含小數點),2位小數,超過6位時,不會截斷 fmt.Printf("|%6.2f|%6.2f|\n",12,222.333) // |%!f(int= 12)|222.33| //使用 - 表示左對齊 fmt.Printf("|%-6.2f|%-6.2f|\n",12.2,3.33) //|12.20 |3.33 | //最小6個寬度,右對齊,不足6個時,空格補齊,超過6位時,不會截斷 fmt.Printf("|%6s|%6s|\n","foo","abcdefgg") //| foo|abcdefgg| ////最小6個寬度,右對齊,不足6個時,空格補齊,超過6位時,不會截斷 fmt.Printf("|%-6s|%-6s|\n","foo","abcdeefgth") //|foo |abcdeefgth| //不會輸出內容,相反,會將內容以字符串的形式返回 s:= fmt.Sprintf("a %s","string") fmt.Println(s) //a string }