fmt包的使用

weixin_34148340發表於2019-01-09

fmt包的使用

功能:fmt包實現了類似C語言printf和scanf的格式化I/O。格式化動作('verb')源自C語言但更簡單

函式系列

  • 字首
      標準:表示從標準輸入讀取,或者輸出到標準輸出
      F字首:表示從指定的io.Reader介面讀取文字,或者寫入指定的io.Writer介面型別物件
      S字首:表示從文字引數讀取字串,或者生成的字串並返回該字串
  • 字尾
      f字尾:格式化
      ln字尾:使用預設格式化

1、列印格式

2、Stringer 介面
實現了Stringer介面的型別(即有String方法),定義了該型別值的原始顯示。當採用任何接受字元的verb(%v %s %q %x %X)動作格式化一個運算元時,或者被不使用格式字串如Print函式列印運算元時,會呼叫String方法來生成輸出的文字

3、GoStringer 介面
實現了GoStringer介面的型別(即有GoString方法),定義了該型別值的go語法表示。當採用verb %#v格式化一個運算元時,會呼叫GoString方法來生成輸出的文字。

4、Formatter 介面
實現了Formatter介面的型別可以定製自己的格式化輸出。Format方法的實現內部可以呼叫Sprint或Fprint等函式來生成自身的輸出

5、Scanner 和 ScanState 介面
當Scan、Scanf、Scanln或類似函式接受實現了Scanner介面的型別(其Scan方法的receiver必須是指標,該方法從輸入讀取該型別值的字串表示並將結果寫入receiver)作為引數時,會呼叫其Scan方法進行定製的掃描

ScanState代表一個將傳遞給Scanner介面的Scan方法的掃描環境。 Scan函式中,可以進行一次一個rune的掃描,或者使用Token方法獲得下一個token(比如空白分隔的token)

6、Scanning
  一系列類似的函式可以掃描格式化文字以生成值
  a、Scan、Scanf和Scanln從標準輸入os.Stdin讀取文字
  b、Fscan、Fscanf、Fscanln從指定的io.Reader介面讀取文字
  c、Sscan、Sscanf、Sscanln從一個引數字串讀取文字,會在讀取到換行時

7、scan系列函式

func Scan(a ...interface{}) (n int, err error) //Scan從標準輸入掃描文字,將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。換行視為空白。返回成功掃描的條目個數和遇到的任何錯誤。如果讀取的條目比提供的引數少,會返回一個錯誤報告原因
func Scanf(format string, a ...interface{}) (n int, err error) //Scanf從標準輸入掃描文字,根據format 引數指定的格式將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。返回成功掃描的條目個數和遇到的任何錯誤
func Scanln(a ...interface{}) (n int, err error) //Scanln類似Scan,但會在換行時才停止掃描。最後一個條目後必須有換行或者到達結束位置。

func Fscan(r io.Reader, a ...interface{}) (n int, err error) //Fscan從r掃描文字,將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。換行視為空白。返回成功掃描的條目個數和遇到的任何錯誤。如果讀取的條目比提供的引數少,會返回一個錯誤報告原因
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error) //Fscanf從r掃描文字,根據format 引數指定的格式將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。返回成功掃描的條目個數和遇到的任何錯誤
func Fscanln(r io.Reader, a ...interface{}) (n int, err error) //Fscanln類似Fscan,但會在換行時才停止掃描。最後一個條目後必須有換行或者到達結束位置

func Sscan(str string, a ...interface{}) (n int, err error) //Sscan從字串str掃描文字,將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。換行視為空白。返回成功掃描的條目個數和遇到的任何錯誤。如果讀取的條目比提供的引數少,會返回一個錯誤報告原因
func Sscanf(str string, format string, a ...interface{}) (n int, err error) //Sscanf從字串str掃描文字,根據format 引數指定的格式將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。返回成功掃描的條目個數和遇到的任何錯誤
func Scanln(a ...interface{}) (n int, err error) //Scanln類似Scan,但會在換行時才停止掃描。最後一個條目後必須有換行或者到達結束位置。

8、print系列函式

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) //rintln採用預設格式將其引數格式化並寫入標準輸出。總是會在相鄰引數的輸出之間新增空格並在輸出結束後新增換行符。返回寫入的位元組數和遇到的任何錯誤

func Fprint(w io.Writer, a ...interface{}) (n int, err error) //Fprint採用預設格式將其引數格式化並寫入w。如果兩個相鄰的引數都不是字串,會在它們的輸出之間新增空格。返回寫入的位元組數和遇到的任何錯誤
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) //Fprintf根據format引數生成格式化的字串並寫入w。返回寫入的位元組數和遇到的任何錯誤
func Fprintln(w io.Writer, a ...interface{}) (n int, err error) //Fprintln採用預設格式將其引數格式化並寫入w。總是會在相鄰引數的輸出之間新增空格並在輸出結束後新增換行符。返回寫入的位元組數和遇到的任何錯誤

func Sprint(a ...interface{}) string //Sprint採用預設格式將其引數格式化,串聯所有輸出生成並返回一個字串。如果兩個相鄰的引數都不是字串,會在它們的輸出之間新增空格
func Sprintf(format string, a ...interface{}) string //Sprintf根據format引數生成格式化的字串並返回該字串
func Sprintln(a ...interface{}) string //Sprintln採用預設格式將其引數格式化,串聯所有輸出生成並返回一個字串。總是會在相鄰引數的輸出之間新增空格並在輸出結束後新增換行符

相關文章