Go語言從入門到精通 - 【精華篇】fmt包詳解

包fmt

import "fmt"

軟件包fmt實現了格式化的I / O,其功能類似於C的printf和scanf。格式'動詞'來自C,但更簡單。

Printing

已有示例代碼:

type Person struct {
    Name    string
}

通用:

佔位符 說明 示例 輸出
%v 相應值的默認格式 Printf("%v",person ) {zhangsan}
%+v 類似%v,但輸出結構體時會添加字段名式 Printf("%+v",person ) {Name:zhangsan}
%#v 相應值的Go語法表示 Printf("#v",person ) main.Person={zhangsan}
%T 相應值的類型的Go語法表示 Printf("%T",person ) main.Person
%% 字面上的百分號,並非值的佔位符 Printf("%%") %

布爾值:

布爾佔位符 說明 示例 輸出
%t 單詞true或false Printf("%t",true) true

整數:

佔位符 說明 示例 輸出
%b 二進制表示 Printf("%b",5) 101
%c 該值對應的unicode碼值 Printf("%c",0x4E2d)
%d 十進制表示 Printf("%d",0x12) 18
%o 八進制表示 Printf("%o",10) 12
%q 單引號圍繞的字符字面值,由Go語法安全的轉譯 Printf("%q",0x4E2d) '中'
%x 十六進制表示,字母形式爲小寫a-f Printf("%x",13) d
%X 十六進制表示,字母形式爲大寫A-F Printf("%X",13) D
%U 表示爲Unicode格式:U+1234,等價於"U+%04X" Printf("%U",0x4E2d) U+4E2D

浮點數與複數的兩個組分:

佔位符 說明 示例 輸出
%b 無小數部分、指數爲二的冪的科學計數法,與strconv.FormatFloat的'b'轉換格式一致。 Printf("%b",10.20) 5742089524897382p-49
%e 科學計數法,如-1234.456e+78 Printf("%e",10.20) 1.020000e+01
%E 科學計數法,如-1234.456E+78 Printf("%E",10.20) 1.020000E+01
%f 有小數部分但無指數部分,如123.456 Printf("%f",10.20) 10.200000
%g 根據實際情況採用%e或%f格式(以獲得更簡潔、準確的輸出) Printf("%g",10.20) 10.2
%G 根據實際情況採用%E或%F格式(以獲得更簡潔、準確的輸出) Printf("%G",10.20) (10.2+2i)

字符串和[]byte:
佔位符 | 說明 | 示例 | 輸出
:---: |:---:|:---:|:---:
%s | 輸出字符串表示(string類型或[]byte) | Printf("%s",[]byte("Go語言")) | Go語言
%q | 雙引號圍繞的字符串,由Go語法安全的轉譯 | Printf("%q","Go語言") | "Go語言"
%x | 十六進制,小寫字母,每字節兩個字符 | Printf("%x","golang") | 676f6c616e67
%X | 十六進制,大寫字母,每字節兩個字符 | Printf("%X","golang") | 676F6C616E67

指針:

佔位符 說明 示例 輸出
%P 十六進制表示,前綴 0x Printf("%p",&person) 0xc0420341c0

其他:

佔位符 說明 示例 輸出
+ 總是輸出數值的正負號;對%q(%+q)會生成全部是ASCII字符的輸出(通過轉義) Printf("%+q","中文") "\u4e2d\u6587"
- 在輸出右邊填充空白而不是默認的左邊(即從默認的右對齊切換爲左對齊);
# 切換格式:八進制數前加0(%#o) Printf("%#0",46)
  十六進制數前加0x(%#x)或0X(%#X) Printf("%#x",46) 0x2e
  指針去掉前面的0x(%#p);) fmt.Printf("%#p",&person) c0420441b0
  對%q(%#q),如果strconv.CanBackquote返回真會輸出反引號括起來的未轉義字符串; Printf("%#q",'中') '中'
  對%U(%#U),如果字符是可打印的,會在輸出Unicode格式、空格、單引號括起來的go字面值; Printf("%#U",'中') U+4E2D '中'
' ' (空格)爲數值中省略的正負號流出空白(% d); Printf("% d",16)  16
  以十六進制(% x,% X)打印字符串或切片時,在字節之間用空格隔開 Printf("% x","abc") 61 62 63
0 使用0而不是空格填充,對於數值類型會把填充的0放在正負號後面

函數

Print

// Print 將參數列表 a 中的各個參數轉換爲字符串並寫入到標準輸出中。
// 非字符串參數之間會添加空格,返回寫入的字節數。
func Print(a ...interface{}) (n int, err error)

Println

// Println 功能類似 Print,只不過最後會添加一個換行符。
// 所有參數之間會添加空格,返回寫入的字節數。
func Println(a ...interface{}) (n int, err error)

Printf

// Printf 將參數列表 a 填寫到格式字符串 format 的佔位符中。
// 填寫後的結果寫入到標準輸出中,返回寫入的字節數。
func Printf(format string, a ...interface{}) (n int, err error)

Fprintf

// 功能同上面三個函數,只不過將轉換結果寫入到 w 中。
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

Sprintf

// 功能同上面三個函數,只不過將轉換結果以字符串形式返回。
func Sprint(a ...interface{}) string
func Sprintln(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string

Errorf

// 功能同 Sprintf,只不過結果字符串被包裝成了 error 類型。
func Errorf(format string, a ...interface{}) error

GoLang官方網址

https://godoc.org/fmt

視頻和代碼

鏈接:https://pan.baidu.com/s/1Vun4KC8RX9mu93I_0tChmw
提取碼:8x8c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章