每日播報!一文了解 Go fmt 標準庫輸入函數的使用

2022-12-31 20:15:15 來源:51CTO博客

耐心和持久勝過激烈和狂熱。

哈嘍大家好,我是陳明勇,今天分享的內容是 Go fmt 標準庫輸入函數的使用。如果本文對你有幫助,不妨點個贊,如果你是 Go 語言初學者,不妨點個關注,一起成長一起進步,如果本文有錯誤的地方,歡迎指出!

fmt 輸入函數

函數


(資料圖片)

描述

Fscan(r io.Reader, a ...any) (n int, err error)

從 r 中讀取內容,以空格或換行符為分隔符,按順序依次賦值給不同參數

Fscanf(r io.Reader, format string, a ...any) (n int, err error)

從 r 中讀取內容,以空格為分隔符,將分割后的內容存儲到由格式決定的不同參數中。r 中存在的換行符必須與格式中的換行符相匹配

Fscanln(r io.Reader, a ...any) (n int, err error)

類似于 Fscan 函數,不同點是遇到換行符后停止讀取,最后一項內容后面必須有換行符或 EOF

Scan(a ...any) (n int, err error)

從標準輸入讀取內容,以空格或換行符為分隔符,按順序依次賦值給不同參數

Scanf(format string, a ...any) (n int, err error)

從標準輸入讀取內容,以空格為分隔符,將分割后的內容存儲到由格式決定的不同參數中。標準輸入中的換行符必須與格式中的換行符相匹配。特殊情況是 %c 占位符可以接收空格或換行符等

Scanln(a ...any) (n int, err error)

類似于 Scan 函數,不同點是遇到換行符后停止讀取,最后一項內容后面必須有換行符或 EOF

Sscan(str string, a ...any) (n int, err error)

從字符串中讀取內容,以空格或換行符為分隔符,按順序依次賦值給不同參數

Sscanf(str string, format string, a ...any) (n int, err error)

從字符串中讀取內容,以空格為分隔符,將分割后的內容存儲到由格式決定的不同參數中。字符串中的換行符必須與格式中的換行符相匹配

Sscanln(str string, a ...any) (n int, err error)

類似于 Sscan 函數,不同點是遇到換行符后停止讀取,字符串最后面必須有換行符或 EOF

Fscan、Fscanf、Fscanln

Fscan
func main() {  file, err := os.Open("./test.txt")  if err != nil {    return  }  defer file.Close()  var num1, num2 int  _, err = fmt.Fscan(file, &num1, &num2)  if err != nil {    return  }  fmt.Println(num1, num2) // 123 456}
??./test.txt?? 的內容為:??123 456????Fscan?? 函數通過空格或換行符分隔內容并賦值給變量,因此使用 ??num1?? 和 ??num2?? 變量接收分隔后的內容 ??123?? ??456??。必須將 ??num1?? 和 ??num2?? 的地址傳遞進去,而不是值傳遞。Fscanf
import (  "fmt"  "os")func main() {  file, err := os.Open("./test.txt")  if err != nil {    return  }  defer file.Close()  var num1, num2 int  _, err = fmt.Fscanf(file, "%d%d", &num1, &num2)  if err != nil {    return  }  fmt.Println(num1, num2) // 123 456}

通過占位符 %d,將文件里的內容賦值給 ??num1?? 和 ??num2?? 變量。

Fscanln
import (  "fmt"  "os")func main() {  file, err := os.Open("./test.txt")  if err != nil {    return  }  defer file.Close()  var num1, num2 int  _, err = fmt.Fscanln(file, &num1, &num2)  if err != nil {    return  }  fmt.Println(num1, num2) // 123 456}

??Fscanln?? 與 Fscan類似,但是遇到換行符停止掃描,如果所掃描到的內容數量與變量數量不一致,將會返回 error

Scan、Scanf、Scanln

Scan
import "fmt"func main() {  var name string  fmt.Println("請輸入你的姓名:")  fmt.Scan(&name)  fmt.Println(name) // 小明}
運行結果:
請輸入你的姓名:小明小明
使用 ??name?? 變量接收輸入的值Scanf
import "fmt"func main() {  var name string  var age int  fmt.Println("請輸入你的姓名和性別:")  fmt.Scanf("%s%d", &name, &age)  fmt.Println(name, age) // 小明}
運行結果:
請輸入你的姓名和性別:小明 18小明 18

使用占位符 ??%s??? 和 ??%d??? 分別指定將字符串和整型的數據賦值給 ??name??? 和 ??age??。

Scanln
import "fmt"func main() {  var name string  fmt.Println("請輸入你的姓名:")  fmt.Scanln(&name)  fmt.Println(name) // 小明}

和 ??Scan?? 是類似的,只不過它遇到換行符后就停止掃描。

Sscan、Sscanf、Sscanln

import "fmt"func main() {  var name string  var age int  fmt.Sscan("小明 20", &name, &age)  fmt.Println(name, age) // 小明 20  fmt.Sscanf("小紅 18", "%s%d", &name, &age)  fmt.Println(name, age) // 小紅 18  fmt.Sscanln("小剛 21", &name, &age)  fmt.Println(name, age) // 小剛 21}

這三個輸入函數和上面介紹的類似,只不過這三個是從字符串里面讀取的內容。

小結

本篇文章對 fmt 標準庫的常用輸入函數進行了介紹。輸入函數分三類介紹,第一類是從文件獲取輸入的內容,第二類是從標準輸入獲取輸入的內容,第三類是從字符串里獲取輸入的內容。并給出簡單的示例代碼。

標簽: 輸入函數 標準輸入 特殊情況

上一篇:PyTorch數據集處理
下一篇:【kubernetes入門到精通】Kubernetes的健康監測機制以及常見ExitCode問題分析「探索篇」