當使用fmt包打印一個數值時,我們可以用%d、%o或%x參數控制輸出的進制格式,就像下面的例子:
o := 0666 fmt.Printf("%d %[1]o %#[1]o\n", o) // "438 666 0666" x := int64(0xdeadbeef) fmt.Printf("%d %[1]x %#[1]x %#[1]X\n", x) // Output: // 3735928559 deadbeef 0xdeadbeef 0XDEADBEEF
注意fmt的兩個使用技巧。通常Printf格式化字符串包含多個%參數時將會包含對應相同數量的額外操作數,但是%之后的 [1] 副詞告訴Printf函數再次使用第一個操作數。第二,%后的 # 副詞告訴Printf在用%o、%x或%X輸出時生成0、0x或0X前綴。
字符使用 %c 參數打印通過一對單引號直接包含對應字符,或者是用 %q 參數打印帶單引號的字符:
ascii := 'a' unicode := '國' newline := '\n' fmt.Printf("%d %[1]c %[1]q\n", ascii) // "97 a 'a'" fmt.Printf("%d %[1]c %[1]q\n", unicode) // "22269 國 '國'" fmt.Printf("%d %[1]q\n", newline) // "10 '\n'"
用Printf函數的%g參數打印浮點數,將采用更緊湊的表示形式打印,並提供足夠的精度,但是對應表格的數據,使用%e(帶指數)或%f的形式打印可能更合適。所有的這三個打印形式都可以指定打印的寬度和控制打印精度。
for x := 0; x < 8; x++ { fmt.Printf("x = %d e^x = %8.3f\n", x, math.Exp(float64(x))) }