golang fmt(格式換 I O接口)

基本模式

fmt 方法能夠大體分爲 print, scan兩類, 根據基礎方法能夠構建特定方法。git

  • Print 將參數寫入字符串或io.writer
  • scan 從字符串或 io.Reader 讀取指定數據, 並輸出

Print

Print 方法的幾種模式github

  • 基礎模式: [name] Print 返回默認格式化的字符串
  • 寫入模式: F[name] 返回寫入字節 例如: Fprint
  • 字符模式: S[name] 返回字符 例如: Sprint
  • 模板模式: [name]f 根據模板格式化 例如: Printf
  • 換行模式: [name]ln 輸出後帶換行 例如: Println

模式可組合, 例如 Fprintf, Sprintfgolang

Print

默認格式化,返回字符串svg

func Print(a ...interface{}) (n int, err error)
fmt.Print("name", 23, []byte("show me"))
    // -> name23 [115 104 111 119 32 109 101]

Printf 模板模式

根據模板使用默認格式輸出ui

func Printf(format string, a ...interface{}) ( str string, err error)
str, _ := fmt.Printf("name: %s", "coco")

// str -> "name: coco"

Fprint 寫入模式

將數據寫入 io.Writerurl

func Fprint(w io.Writer, a ...interface{}) (n int, err error)
file, _ := os.OpenFile("./target.js", os.O_RDWR, os.ModeAppend)

    n, err := fmt.Fprint(file, "name", 24)
    
    // n, err -> 6, nil
    

Sprint 字符模式

func Sprint(a ...interface{}) string
str := fmt.Sprint("name: %s", "coco")
    // -> name: coco

Scan

  • Scan 方法的幾種模式, 全部方法都返回 寫入字節數(n)錯誤(err)
  • 基礎模式: [name] Scan 將輸入值寫入參數中
  • 讀取模式: F[name] 從io.Reader 讀取數據 例如: Fscan
  • 字符模式: S[name] 從字符串讀取數據 例如: Sscan
  • 模板模式: [name]f 根據模板提取數據 例如: scanf
  • 換行模式: [name]ln 以換行符號作讀取結束 例如: scanln

Scan

根據標準輸入,提取數據spa

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

var name string
var age int

// 這裏參數須要傳入指針類型,獲取寫入數據
if _, err := fmt.Scan(&name, &age); err != nil{
    fmt.Println(err)
    return
}

fmt.Printf("name: $s, age: %d", name, age)



// 終端輸入 coco 24
// 終端輸出 name: coco, age: 24
// 當出入參數數量達到時,跳出輸入

從io.Reader讀取數據,並解析.net

func Fscan(r io.Reader, a ...interface{}) (n int, err error)

// target.js
let name = "coco"


// main.go

    var t string
    var n string
    file, _ := os.Open("./target.js")
    fmt.Fscan(file, &t, &n)

    // t, n -> let 0
    // 以空格做爲分割, 當數據不符合類型定義時,返回該類型的默認值

根據指定格式,提取標準輸入數據指針

func Scanf(format string, a ...interface{}) (n int, err error)
var name string
    var age int

    fmt.Scanf("name: %s\nage: %d", &name, &age)

    fmt.Println(name,'\n', age)
    
    
    /* 終端輸入: name: coco age: 24 */
    
    /* 終端輸出: coco 24 */
    
    // 當輸入不符合指定格式時,將返回錯誤,跳出輸入

以換行符結束輸入code

func Scanln(a ...interface{}) (n int, err error)
var name string
    var age int

    fmt.Scanln(&name, &age)

    /* 終端輸入: coco 24 [換行, 結束輸入] */
    
    // name, age -> coco 24

本文同步分享在 博客「直立猿」(JianShu)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索