一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸入函數(shù)的使用 原創(chuàng)
fmt 輸入函數(shù)
| 函數(shù) | 描述 |
|---|---|
| Fscan(r io.Reader, a ...any) (n int, err error) | 從 r 中讀取內(nèi)容,以空格或換行符為分隔符,按順序依次賦值給不同參數(shù) |
| Fscanf(r io.Reader, format string, a ...any) (n int, err error) | 從 r 中讀取內(nèi)容,以空格為分隔符,將分割后的內(nèi)容存儲到由格式?jīng)Q定的不同參數(shù)中。r 中存在的換行符必須與格式中的換行符相匹配 |
| Fscanln(r io.Reader, a ...any) (n int, err error) | 類似于 Fscan 函數(shù),不同點是遇到換行符后停止讀取,最后一項內(nèi)容后面必須有換行符或 EOF |
| Scan(a ...any) (n int, err error) | 從標(biāo)準(zhǔn)輸入讀取內(nèi)容,以空格或換行符為分隔符,按順序依次賦值給不同參數(shù) |
| Scanf(format string, a ...any) (n int, err error) | 從標(biāo)準(zhǔn)輸入讀取內(nèi)容,以空格為分隔符,將分割后的內(nèi)容存儲到由格式?jīng)Q定的不同參數(shù)中。標(biāo)準(zhǔn)輸入中的換行符必須與格式中的換行符相匹配。特殊情況是 %c 占位符可以接收空格或換行符等 |
| Scanln(a ...any) (n int, err error) | 類似于 Scan 函數(shù),不同點是遇到換行符后停止讀取,最后一項內(nèi)容后面必須有換行符或 EOF |
| Sscan(str string, a ...any) (n int, err error) | 從字符串中讀取內(nèi)容,以空格或換行符為分隔符,按順序依次賦值給不同參數(shù) |
| Sscanf(str string, format string, a ...any) (n int, err error) | 從字符串中讀取內(nèi)容,以空格為分隔符,將分割后的內(nèi)容存儲到由格式?jīng)Q定的不同參數(shù)中。字符串中的換行符必須與格式中的換行符相匹配 |
| Sscanln(str string, a ...any) (n int, err error) | 類似于 Sscan 函數(shù),不同點是遇到換行符后停止讀取,字符串最后面必須有換行符或 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的內(nèi)容為:123 456Fscan函數(shù)通過空格或換行符分隔內(nèi)容并賦值給變量,因此使用num1和num2變量接收分隔后的內(nèi)容123456。- 必須將
num1和num2的地址傳遞進(jìn)去,而不是值傳遞。
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,將文件里的內(nèi)容賦值給 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 類似,但是遇到換行符停止掃描,如果所掃描到的內(nèi)容數(shù)量與變量數(shù)量不一致,將會返回 error。
Scan、Scanf、Scanln
Scan
import "fmt"
func main() {
var name string
fmt.Println("請輸入你的姓名:")
fmt.Scan(&name)
fmt.Println(name) // 小明
}運行結(jié)果:
請輸入你的姓名:
小明
小明
使用 name 變量接收輸入的值
Scanf
import "fmt"
func main() {
var name string
var age int
fmt.Println("請輸入你的姓名和性別:")
fmt.Scanf("%s%d", &name, &age)
fmt.Println(name, age) // 小明
}運行結(jié)果:
請輸入你的姓名和性別:
小明 18
小明 18
使用占位符 %s 和 %d 分別指定將字符串和整型的數(shù)據(jù)賦值給 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
}這三個輸入函數(shù)和上面介紹的類似,只不過這三個是從字符串里面讀取的內(nèi)容。
小結(jié)
本篇文章對 fmt 標(biāo)準(zhǔn)庫的常用輸入函數(shù)進(jìn)行了介紹。輸入函數(shù)分三類介紹,第一類是從文件獲取輸入的內(nèi)容,第二類是從標(biāo)準(zhǔn)輸入獲取輸入的內(nèi)容,第三類是從字符串里獲取輸入的內(nèi)容。并給出簡單的示例代碼。
到此這篇關(guān)于一文帶你了解Go語言fmt標(biāo)準(zhǔn)庫輸入函數(shù)的使用的文章就介紹到這了,更多相關(guān)Go語言fmt標(biāo)準(zhǔn)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang中基于HTTP協(xié)議的網(wǎng)絡(luò)服務(wù)
HTTP協(xié)議是基于TCP/IP協(xié)議棧的,并且它也是一個面向普通文本的協(xié)議。這篇文章主要詳細(xì)介紹了Golang中基于HTTP協(xié)議的網(wǎng)絡(luò)服務(wù),感興趣的小伙伴可以借鑒一下2023-04-04

