Go基礎篇【第2篇】: 內置庫模塊 fmt

fmt官方文檔說明:https://studygolang.com/pkgdocgit

import "fmt"github

mt包實現了相似C語言printf和scanf的格式化I/O。格式化動做('verb')源自C語言但更簡單。golang

Printing 輸出部分

verb:安全

通用:函數

%v	值的默認格式表示
%+v	相似%v,但輸出結構體時會添加字段名
%#v	值的Go語法表示
%T	值的類型的Go語法表示
%%	百分號

布爾值:ui

%t	單詞true或false

整數:spa

%b	表示爲二進制
%c	該值對應的unicode碼值
%d	表示爲十進制
%o	表示爲八進制
%q	該值對應的單引號括起來的go語法字符字面值,必要時會採用安全的轉義表示
%x	表示爲十六進制,使用a-f
%X	表示爲十六進制,使用A-F
%U	表示爲Unicode格式:U+1234,等價於"U+%04X"

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

%b	無小數部分、二進制指數的科學計數法,如-123456p-78;參見strconv.FormatFloat
%e	科學計數法,如-1234.456e+78
%E	科學計數法,如-1234.456E+78
%f	有小數部分但無指數部分,如123.456
%F	等價於%f
%g	根據實際狀況採用%e或%f格式(以得到更簡潔、準確的輸出)
%G	根據實際狀況採用%E或%F格式(以得到更簡潔、準確的輸出)

字符串和[]byte:code

%s	直接輸出字符串或者[]byte
%q	該值對應的雙引號括起來的go語法字符串字面值,必要時會採用安全的轉義表示
%x	每一個字節用兩字符十六進制數表示(使用a-f)
%X	每一個字節用兩字符十六進制數表示(使用A-F)    

指針:orm

%p	表示爲十六進制,並加上前導的0x    

寬度經過一個緊跟在百分號後面的十進制數指定,若是未指定寬度,則表示值時除必需以外不做填充。精度經過(可選的)寬度後跟點號後跟的十進制數指定。若是未指定精度,會使用默認精度;若是點號後沒有跟數字,表示精度爲0。舉例以下:

%f:    默認寬度,默認精度
%9f    寬度9,默認精度
%.2f   默認寬度,精度2
%9.2f  寬度9,精度2
%9.f   寬度9,精度0    

func Print

func Print(a ...interface{}) (n int, err error)

Print採用默認格式將其參數格式化並寫入標準輸出。若是兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格。返回寫入的字節數和遇到的任何錯誤。

func Fprint

func Fprint(w io.Writer, a ...interface{}) (n int, err error)

Fprint採用默認格式將其參數格式化並寫入w,對Print的擴展。若是兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格。返回寫入的字節數和遇到的任何錯誤。

func Sprint

func Sprint(a ...interface{}) string

Sprint採用默認格式將其參數格式化,串聯全部輸出生成並返回一個字符串。若是兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格。

func Println

func Println(a ...interface{}) (n int, err error)

Println採用默認格式將其參數格式化並寫入標準輸出。老是會在相鄰參數的輸出之間添加空格並在輸出結束後添加換行符。返回寫入的字節數和遇到的任何錯誤。

func Fprintln

func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

Fprintln採用默認格式將其參數格式化並寫入w。老是會在相鄰參數的輸出之間添加空格並在輸出結束後添加換行符。返回寫入的字節數和遇到的任何錯誤。

func Sprintln

func Sprintln(a ...interface{}) string

Sprintln採用默認格式將其參數格式化,串聯全部輸出生成並返回一個字符串。老是會在相鄰參數的輸出之間添加空格並在輸出結束後添加換行符。

func Printf

func Printf(format string, a ...interface{}) (n int, err error)

Printf根據format參數生成格式化的字符串並寫入標準輸出。返回寫入的字節數和遇到的任何錯誤。

即:接收一個可格式化string,而後輸出到標準輸出中。

func Fprintf

func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

Fprintf根據format參數生成格式化的字符串並寫入w能夠理解爲對Printf的擴展,寫入到指定的目的地。返回寫入的字節數和遇到的任何錯誤。

func Sprintf 

func Sprintf(format string, a ...interface{}) string

Sprintf根據format參數生成格式化的字符串並返回該字符串

func Errorf 

func Errorf(format string, a ...interface{}) error

Errorf根據format參數生成格式化字符串並返回一個包含該字符串的錯誤。

 

獲取輸入

// Scan 從標準輸入中讀取數據,並將數據用空白分割並解析後存入 a 提供
// 的變量中(換行符會被看成空白處理),變量必須以指針傳入。
// 當讀到 EOF 或全部變量都填寫完畢則中止掃描。
// 返回成功解析的參數數量。
func Scan(a ...interface{}) (n int, err error)

// Scanln 和 Scan 相似,只不過遇到換行符就中止掃描。
func Scanln(a ...interface{}) (n int, err error)

// Scanf 從標準輸入中讀取數據,並根據格式字符串 format 對數據進行解析,
// 將解析結果存入參數 a 所提供的變量中,變量必須以指針傳入。
// 輸入端的換行符必須和 format 中的換行符相對應(若是格式字符串中有換行
// 符,則輸入端必須輸入相應的換行符)。
// 佔位符 %c 老是匹配下一個字符,包括空白,好比空格符、製表符、換行符。
// 返回成功解析的參數數量。
func Scanf(format string, a ...interface{}) (n int, err error)
// 對於 Scan 而言,回車視爲空白
func main() {
    a, b, c := "", 0, false
    fmt.Scan(&a, &b, &c)
    fmt.Println(a, b, c)
    // 在終端執行後,輸入 abc 1 回車 true 回車
    // 結果 abc 1 true
}

// 對於 Scanln 而言,回車結束掃描
func main() {
    a, b, c := "", 0, false
    fmt.Scanln(&a, &b, &c)
    fmt.Println(a, b, c)
    // 在終端執行後,輸入 abc 1 true 回車
    // 結果 abc 1 true
}

// 格式字符串能夠指定寬度
func main() {
    a, b, c := "", 0, false
    fmt.Scanf("%4s%d%t", &a, &b, &c)
    fmt.Println(a, b, c)
    // 在終端執行後,輸入 1234567true 回車
    // 結果 1234 567 true
}
// 功能同上面三個函數,只不過從 r 中讀取數據。
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

// 功能同上面三個函數,只不過從 str 中讀取數據。
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
type student struct {
    Name string
    Age int
    Score float32
}

func main()  {
    var str = "stu01 18 89.92"
    var stu student
    fmt.Sscanf(str, "%s %d %f", &stu.Name, &stu.Age, &stu.Score)
    fmt.Println(stu)
}
輸出:

{stu01 18 89.92}

相關文章
相關標籤/搜索