05Go語言fmt包詳解
Go語言fmt包詳解
格式化輸出函式
func Print(a ...interface{}) (n int, err error)
Print採用預設格式將其引數格式化並寫入標準輸出。如果兩個相鄰的引數都不是字串,會在它們的輸出之間新增空格,返回寫入的位元組數和遇到的任何錯誤。
func Printf(format string, a ...interface{}) (n int, err error)
Printf根據format引數生成格式化的字串並寫入標準輸出,返回寫入的位元組數和遇到的任何錯誤。
func Println(a ...interface{}) (n int, err error)
Println採用預設格式將其引數格式化並寫入標準輸出。總是會在相鄰引數的輸出之間新增空格並在輸出結束後新增換行符,返回寫入的位元組數和遇到的任何錯誤。
常用的格式化
Go語言的標準輸出流在列印到螢幕時有些引數跟別的語言(比如C#和Java)不同,下面是我整理的一些常用的格式化操作。
普通佔位符
佔位符 | 說明 | 舉例 |
---|---|---|
%v | 以預設的方式列印變數的值 | fmt.Printf("%v", site) |
%+v | 在列印結構體時,會新增欄位名 | fmt.Printf("%+v", site) |
%#v | 在列印結構體時,會新增欄位名和包名 | fmt.Printf("%#v", site) |
%T | 列印變數的型別 | fmt.Printf("%T", site) |
%% | 字面上的百分號,並非值的佔位符 | fmt.Printf("%%") |
布林佔位符
佔位符 | 說明 | 舉例 |
---|---|---|
%t | 列印true或false | fmt.Printf("%t", true) |
整數佔位符
佔位符 | 說明 | 舉例 |
---|---|---|
%b | 表示為二進位制 | fmt.Printf("%b", 100) |
%c | 該值對應的unicode碼值 | fmt.Printf("%c", 0x4E2D) |
%d | 表示為十進位制 | fmt.Printf("%d", 0x12) |
%o | 表示為八進位制 | fmt.Printf("%d", 10) |
%q | 該值對應的單引號括起來的go語法字元字面值,必要時會採用安全的轉義表示 | fmt.Printf("%q", 0x4E2D) |
%x | 十六進位制表示,字母形式為小寫 a-f | fmt.Printf("%x", 13) |
%X | 十六進位制表示,字母形式為大寫 A-F | fmt.Printf("%x", 13) |
%U | 表示為Unicode格式:U+1234,等價於"U+%04X" | fmt.Printf("%U", 0x4E2D) |
浮點數和複數的組成部分(實部和虛部)
佔位符 | 說明 | 舉例 |
---|---|---|
%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) |