濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 詳解golang碎片整理之 fmt.Scan

詳解golang碎片整理之 fmt.Scan

熱門標(biāo)簽:高德地圖標(biāo)注口訣 西部云谷一期地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 中國(guó)地圖標(biāo)注省會(huì)高清 學(xué)海導(dǎo)航地圖標(biāo)注 南通如皋申請(qǐng)開通400電話 地圖標(biāo)注的汽車標(biāo) 浙江高速公路地圖標(biāo)注 廣州呼叫中心外呼系統(tǒng)

本文介紹了從golang語(yǔ)言中fmt包從標(biāo)準(zhǔn)輸入獲取數(shù)據(jù)的Scan系列函數(shù)、從io.Reader中獲取數(shù)據(jù)的Fscan系列函數(shù)以及從字符串中獲取數(shù)據(jù)的Sscan系列函數(shù)的用法。

Scan系列

go語(yǔ)言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三個(gè)函數(shù),可以在程序運(yùn)行過程中從標(biāo)準(zhǔn)輸入獲取用戶的輸入。

fmt.Scan

語(yǔ)法

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

Scan 從標(biāo)準(zhǔn)輸入掃描文本,讀取由空白符分隔的值保存到傳遞給本函數(shù)的參數(shù)中,換行符視為空白符。

本函數(shù)返回成功掃描的數(shù)據(jù)個(gè)數(shù)和遇到的任何錯(cuò)誤。如果讀取的數(shù)據(jù)個(gè)數(shù)比提供的參數(shù)少,會(huì)返回一個(gè)錯(cuò)誤報(bào)告原因。

代碼示例

package main

import "fmt"
func main(){
 var (
  name string
  age int
  married bool
 )
 fmt.Scan(name,age,married)
 fmt.Printf("掃描結(jié)果 name:%s age:%d married:%t\t",name,age,married)
}

將上述代碼在終端運(yùn)行,在終端依次輸入 Alfred 、26、false使用空格分隔。

go run main.go
alfred 26 false
掃描結(jié)果 name:alfred age:26 married:false

fmt.Scan從標(biāo)準(zhǔn)輸入中掃描用戶輸入的數(shù)據(jù),將以空白符分隔的數(shù)據(jù)分別存入指定的參數(shù)中。

fmt.Scanf

語(yǔ)法

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

Scanf從標(biāo)準(zhǔn)輸入掃描文本,根據(jù)format參數(shù)指定的格式去讀取由空白符分隔的值保存到傳遞給本函數(shù)的參數(shù)中。

本函數(shù)返回成功掃描的數(shù)據(jù)個(gè)數(shù)和遇到的任何錯(cuò)誤。

代碼實(shí)例

package main
import "fmt"
func main(){
var (
 name string
 age int
 married bool
)
fmt.Scanf("1:%s 2:%d 3:%t", name,age,married)
fmt.Printf("掃描結(jié)果 name:%s age:%d married:%t", name,age,married)
}

將上面的代碼編譯后在終端執(zhí)行,在終端按照指定的格式一次輸入1:alfred 2:26 3:false 。

go run main.go
1:alfred 2:26 3:false
掃描結(jié)果 name:alfred age:26 married:false

fmt.Scanf和fmt.Scan不同于以簡(jiǎn)單的空格符作為輸入數(shù)據(jù)的分隔符,fmt.Scanf為輸入數(shù)據(jù)指定了具體的輸入內(nèi)容格式,只有按照格式輸入數(shù)據(jù)才會(huì)被掃描并存入對(duì)應(yīng)變量。

例如,我們還是按照上個(gè)示例中以空格符分隔的方式輸入,fmt.Scanf就不能正確掃描到輸入的數(shù)據(jù)。

fmt.Scanln

語(yǔ)法

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

Scanln類似于Scan,它遇到換行才停止掃描。最后一個(gè)數(shù)據(jù)后面必須有換行或者到達(dá)結(jié)束位置。

本函數(shù)返回成功掃描的數(shù)據(jù)個(gè)數(shù)和遇到的任何錯(cuò)誤。

代碼示例

package main
import "fmt"
func main(){
 var (
  name string
  age int
  married bool
 )
 fmt.Scanln(name,age,married)
 fmt.Printf("掃描結(jié)果 name:%s age:%d married:%t",name,age,married)
}

將上述代碼編譯后在終端執(zhí)行,在終端依次輸入alfred 26 false使用空格分隔。

go run main.go
alfred 26 false
掃描結(jié)果 name:alfred age:26 married:false

fmt.Scanln遇到回車就結(jié)束掃描了,這個(gè)比較常用。

Fscan系列

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)

這幾個(gè)函數(shù)功能類似于fmt.Scan 、fmt.Scanf、fmt.Scanln三個(gè)函數(shù),只不過它們不是從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)而是從io.Reader中讀取數(shù)據(jù)。

Sscan系列

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)

這幾個(gè)函數(shù)功能類似于fmt.Scan 、fmt.Scanf、fmt.Scanln三個(gè)函數(shù),只不過它們不是從標(biāo)準(zhǔn)輸入中讀取數(shù)據(jù)而是從指定字符串中讀取數(shù)據(jù)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • golang fmt占位符的使用詳解
  • golang 輸出重定向:fmt Log,子進(jìn)程Log,第三方庫(kù)logrus的詳解
  • golang 占位符和fmt常見輸出介紹

標(biāo)簽:德宏 保定 貴州 曲靖 常州 吐魯番 許昌 東營(yíng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解golang碎片整理之 fmt.Scan》,本文關(guān)鍵詞  詳解,golang,碎片,整理,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解golang碎片整理之 fmt.Scan》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于詳解golang碎片整理之 fmt.Scan的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    越西县| 炉霍县| 轮台县| 县级市| 梨树县| 垫江县| 太白县| 临夏县| 崇信县| 长阳| 甘肃省| 攀枝花市| 辉南县| 民勤县| 清新县| 黑山县| 子长县| 青州市| 清涧县| 永清县| 镇原县| 微山县| 旌德县| 大英县| 邢台市| 靖安县| 肥东县| 施甸县| 渝北区| 尖扎县| 铜梁县| 雷山县| 辽宁省| 密云县| 资兴市| 利津县| 金沙县| 房产| 涟源市| 延吉市| 会东县|