golang 的fmt 包實(shí)現(xiàn)了格式化I/O函數(shù)狸演,類似于C的 printf 和 scanf喊式。
# 定義示例類型和變量typeHumanstruct{Namestring}var people=Human{Name:"zhangsan"}
普通占位符占位符說(shuō)明舉例輸出%v相應(yīng)值的默認(rèn)格式。Printf("%v",people){zhangsan}兽狭,%+v打印結(jié)構(gòu)體時(shí)憾股,會(huì)添加字段名Printf("%+v",people){Name:zhangsan}%#v? ? 相應(yīng)值的Go語(yǔ)法表示? ? ? ? ? ? Printf("#v", people)? main.Human{Name:"zhangsan"}%T相應(yīng)值的類型的Go語(yǔ)法表示Printf("%T",people)main.Human%%字面上的百分號(hào)鹿蜀,并非值的占位符Printf("%%")%
布爾占位符占位符說(shuō)明舉例輸出%ttrue或false。Printf("%t",true)true
整數(shù)占位符占位符說(shuō)明舉例輸出%b二進(jìn)制表示Printf("%b",5)101%c相應(yīng)Unicode碼點(diǎn)所表示的字符Printf("%c",0x4E2D)中%d十進(jìn)制表示Printf("%d",0x12)18%o八進(jìn)制表示Printf("%d",10)12%q單引號(hào)圍繞的字符字面值服球,由Go語(yǔ)法安全地轉(zhuǎn)義Printf("%q",0x4E2D)'中'%x十六進(jìn)制表示茴恰,字母形式為小寫a-fPrintf("%x",13)d%X十六進(jìn)制表示,字母形式為大寫A-FPrintf("%x",13)D%UUnicode格式:U+1234斩熊,等同于"U+%04X"Printf("%U",0x4E2D)U+4E2D
浮點(diǎn)數(shù)和復(fù)數(shù)的組成部分(實(shí)部和虛部)占位符說(shuō)明舉例輸出%b無(wú)小數(shù)部分的往枣,指數(shù)為二的冪的科學(xué)計(jì)數(shù)法,與strconv.FormatFloat的'b'轉(zhuǎn)換格式一致粉渠。例如-123456p-78%e科學(xué)計(jì)數(shù)法分冈,例如-1234.456e+78Printf("%e",10.2)1.020000e+01%E科學(xué)計(jì)數(shù)法,例如-1234.456E+78Printf("%e",10.2)1.020000E+01%f有小數(shù)點(diǎn)而無(wú)指數(shù)霸株,例如123.456Printf("%f",10.2)10.200000%g根據(jù)情況選擇%e或%f以產(chǎn)生更緊湊的(無(wú)末尾的0)輸出Printf("%g",10.20)10.2%G根據(jù)情況選擇%E或%f以產(chǎn)生更緊湊的(無(wú)末尾的0)輸出Printf("%G",10.20+2i)(10.2+2i)
字符串與字節(jié)切片占位符說(shuō)明舉例輸出%s輸出字符串表示(string類型或[]byte)Printf("%s",[]byte("Go語(yǔ)言"))Go語(yǔ)言%q雙引號(hào)圍繞的字符串雕沉,由Go語(yǔ)法安全地轉(zhuǎn)義Printf("%q","Go語(yǔ)言")"Go語(yǔ)言"%x十六進(jìn)制,小寫字母去件,每字節(jié)兩個(gè)字符Printf("%x","golang")676f6c616e67%X十六進(jìn)制坡椒,大寫字母,每字節(jié)兩個(gè)字符Printf("%X","golang")676F6C616E67
指針占位符說(shuō)明舉例輸出%p十六進(jìn)制表示尤溜,前綴0xPrintf("%p",&people)0x4f57f0
其它標(biāo)記占位符說(shuō)明舉例輸出+總打印數(shù)值的正負(fù)號(hào)倔叼;對(duì)于%q(%+q)保證只輸出ASCII編碼的字符。Printf("%+q","中文")"\u4e2d\u6587"-在右側(cè)而非左側(cè)填充空格(左對(duì)齊該區(qū)域)#? ? ? 備用格式:為八進(jìn)制添加前導(dǎo) 0(%#o)? ? ? Printf("%#U", '中')? ? ? U+4E2D為十六進(jìn)制添加前導(dǎo)0x(%#x)或 0X(%#X)宫莱,為 %p(%#p)去掉前導(dǎo) 0x丈攒;如果可能的話,%q(%#q)會(huì)打印原始 (即反引號(hào)圍繞的)字符串梢睛;如果是可打印字符肥印,%U(%#U)會(huì)寫出該字符的Unicode編碼形式(如字符x會(huì)被打印成U+0078'x')识椰。' '(空格)為數(shù)值中省略的正負(fù)號(hào)留出空白(%d)绝葡;以十六進(jìn)制(%x,%X)打印字符串或切片時(shí),在字節(jié)之間用空格隔開(kāi)0填充前導(dǎo)的0而非空格腹鹉;對(duì)于數(shù)字藏畅,這會(huì)將填充移到正負(fù)號(hào)之后
golang沒(méi)有 '%u' 點(diǎn)位符,若整數(shù)為無(wú)符號(hào)類型功咒,默認(rèn)就會(huì)被打印成無(wú)符號(hào)的愉阎。
寬度與精度的控制格式以Unicode碼點(diǎn)為單位。寬度為該數(shù)值占用區(qū)域的最小寬度力奋;精度為小數(shù)點(diǎn)之后的位數(shù)榜旦。
操作數(shù)的類型為int時(shí),寬度與精度都可用字符 '*' 表示景殷。
對(duì)于 %g/%G 而言溅呢,精度為所有數(shù)字的總數(shù)澡屡,例如:123.45,%.4g 會(huì)打印123.5咐旧,(而?%6.2f 會(huì)打印123.45)驶鹉。
%e 和 %f 的默認(rèn)精度為6
對(duì)大多數(shù)的數(shù)值類型而言,寬度為輸出的最小字符數(shù)铣墨,如果必要的話會(huì)為已格式化的形式填充空格室埋。
而以字符串類型,精度為輸出的最大字符數(shù)伊约,如果必要的話會(huì)直接截?cái)唷?/p>
http://www.cnblogs.com/qing123/articles/4353353.html?hmsr=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com