基本模式
fmt 方法能夠大體分爲 print
, scan
兩類, 根據基礎方法能夠構建特定方法。git
-
Print
將參數寫入字符串或io.writer -
scan
從字符串或 io.Reader 讀取指定數據, 並輸出
Print 方法的幾種模式github
- 基礎模式: [name] Print 返回默認格式化的字符串
- 寫入模式: F[name] 返回寫入字節 例如:
Fprint
- 字符模式: S[name] 返回字符 例如:
Sprint
- 模板模式: [name]f 根據模板格式化 例如:
Printf
- 換行模式: [name]ln 輸出後帶換行 例如:
Println
模式可組合, 例如 Fprintf
, Sprintf
golang
默認格式化,返回字符串
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.Writer
url
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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。