fmt包含有格式化I/O函數,相似於C語言的printf和scanf。格式字符串的規則來源於C,但更簡單一些安全
print輸出給定的字符串,若是是數值或字符,則輸出對應的十進制表示函數
fmt.Print("a", "\n") //輸出a fmt.Print("a", "b", "\n") //輸出ab fmt.Print('a', "\n") //輸出97 fmt.Print('a', 'b', "\n") //輸出97 98 字符之間會輸出一個空格 fmt.Print(12, "\n") //輸出12 fmt.Print(12, 13, "\n") //輸出12 13 數值之間輸出一個空格
Println 自動在結尾輸出\n,兩個數值之間自動加空格,每項之間自動加空格 spa
fmt.Println("---------------------------------") fmt.Println("a") //輸出a fmt.Println("a", "b") //輸出a b fmt.Println('a') //輸出97 fmt.Println('a', 'b') //輸出97 98 fmt.Println(12) //輸出12 fmt.Println(12, 13) //輸出12 13 fmt.Println("\n", 12, 13) //輸出 12 13 12以前有一個空格
二、如下爲printf方法的格式說明:指針
printf 格式化輸出code
定義變量示例blog
type Human struct { Name string } var people = Human{Name:"春生"}
佔位符 | 說明 |
舉例 |
輸出 |
%v |
相應值的默認格式 |
fmt.Printf("%v", name) |
{春生} |
%+v |
打印結構體時,會添加字段名 |
fmt.Printf("%+v", people) |
main.Human{Name:"zhangsan"} |
%#v |
相應值的Go語法表示 |
fmt.Printf("%#v",people) |
main.Human{Name:"春生"} |
%T |
相應值的類型的Go語法表示 |
fmt.Printf("%T",people) |
main.Human |
%% |
字面上的百分號 |
fmt.Printf("%%") |
% |
佔位符 |
說明 | 舉例 | 輸出 |
%t |
true 或 false。 |
fmt.Printf("%t",true) |
true |
佔位符 | 說明 | 舉例 | 輸出 |
%b |
二進制表示 |
fmt.Printf("%b", 5) |
101 |
%c |
相應Unicode碼點所表示的字符 |
fmt.Printf("%c", 0x4E2D) |
中 |
%d |
十進制表示 |
fmt.Printf("%d", 0x12) |
18 |
%o |
八進制表示 |
fmt.Printf("%d", 10) |
12 |
%q |
單引號圍繞的字符字面值,由Go語法安全地轉義 |
fmt.Printf("%q", 0x4E2D) |
'中' |
%x | 十六進制表示,字母形式爲小寫 a-f | fmt.Printf("%x", 13) |
d |
%X字符串 |
十六進制表示,字母形式爲大寫 A-F | fmt.Printf("%x", 13) |
D |
%U | Unicode格式:U+1234,等同於 "U+%04X" | fmt.Printf("%U", 0x4E2D) |
U+4E2D |
佔位符 | 說明 | 舉例 |
---|---|---|
%e | (=%.6e) 6位小數點 科學計數法,例如 -1234.456e+78 |
fmt.Printf("%e", 10.2) |
%E | 科學計數法,例如 -1234.456E+78 | fmt.Printf("%e", 10.2) |
%f | (=%.6f) 6位小數點 有小數點而無指數,例如 123.456 |
fmt.Printf("%f", 10.2) |
%g | 根據狀況選擇 %e 或 %f 以產生更緊湊的(無末尾的0)輸出 | fmt.Printf("%g", 10.20) |
%G | 根據狀況選擇 %E 或 %f 以產生更緊湊的(無末尾的0)輸出 | fmt.Printf("%G", 10.20+2i) |
佔位符 | 說明 | 舉例 |
---|---|---|
%s | 輸出字符串表示(string類型或[]byte) | fmt.Printf("%s", []byte("oldboy")) |
%10s | 輸出字符串最小寬度爲10(右對齊) | fmt.Printf("%10s", "oldboy") |
%-10s | 輸出字符串最小寬度爲10(左對齊) | fmt.Printf("%-10s", "oldboy") |
%.5s | 輸出字符串最大寬度爲5 | fmt.Printf("%.5s", "oldboy") |
%5.10s | 輸出字符串最小寬度爲5,最大寬度爲10 | fmt.Printf("%5.10s", "oldboy") |
%-5.10s | 輸出字符串最小寬度爲5,最大寬度爲10(左對齊) | fmt.Printf("%-5.10s", "oldboy") |
%5.3s | 輸出字符串寬度爲5,若是原字符串寬度大於3,則截斷 | fmt.Printf("%5.3s", "oldboy") |
%010s | 若是寬度小於10,就會在字符串前面補零 | fmt.Printf("%010s", "oldboy") |
%q | 雙引號圍繞的字符串,由Go語法安全地轉義 | fmt.Printf("%q", "oldboy") |
%x | 十六進制,小寫字母,每字節兩個字符 | fmt.Printf("%x", "oldboy") |
%X | 十六進制,大寫字母,每字節兩個字符 | fmt.Printf("%X", "oldboy") |
佔位符 | 說明 | 舉例 |
---|---|---|
%p | 十六進制表示,前綴 0x | fmt.Printf("%p", &site) |
%#p | 不帶前綴 0x | fmt.Printf("%#p", &site) |