Go fmt包中Scan獲取標(biāo)準(zhǔn)輸入方式
Go fmt包下有三個(gè)函數(shù)
可以在程序運(yùn)行過(guò)程中獲取用戶輸入。
fmt.Scan
:獲取輸入fmt.Scanf
:獲取輸入,但是可以指定格式,go會(huì)根據(jù)格式解析參數(shù)fmt.Scanln
:獲取一行的輸入,只會(huì)獲取到一行。
示例1
我們需要和gates和jobs問(wèn)個(gè)好,代碼:
fmt.Println("Please enter your names") var a1, a2 string fmt.Scan(&a1, &a2) fmt.Println("hello,", a1, "and", a2)
運(yùn)行后,在窗口中輸入:gates jobs
輸出:
hello, gates and jobs
可以看出,go把輸入的參數(shù)按空格分開(kāi)后,分別賦值給了a1和a2。
整體運(yùn)行結(jié)果(第二行是運(yùn)行時(shí)用戶輸入的):
Please enter your names
gates jobs
hello, gates and jobs
如果我們輸入時(shí)換行輸入:
Please enter your names
gates
jobs
hello, gates and jobs
可以看出gates和jobs中間是敲了回車的,這是Scan和Scanln的區(qū)別。Scan回車還可以繼續(xù)接受,Scanln只要收到回車就不會(huì)繼續(xù)接收輸入了。
示例2
Scanln和Scan非常類似,只是Scanln只會(huì)接受一個(gè)回車,收到回車就掃描結(jié)束了。
var c1, c2 string fmt.Scanln(&c1, &c2) fmt.Println("hello,", c1, "and", c2)
運(yùn)行結(jié)果:
Please enter your names
gates jobs
hello, gates and jobs
如果換行輸入,結(jié)果是:
Please enter your names
gates
hello, gates and
因?yàn)檩斎肓薵ates后,回車,結(jié)果就打印出來(lái)了,沒(méi)機(jī)會(huì)再輸入jobs了,和Scan函數(shù)不一樣。
示例3
fmt.Println("Please enter your names") var b1, b2 string fmt.Scanf("%s , %s", &b1, &b2) fmt.Println("hello,", b1, "and", b2)
運(yùn)行結(jié)果:
Please enter your names
gates , jobs
hello, gates and jobs
上面的示例,需要注意兩點(diǎn):
1、Scanf中間有一個(gè)逗號(hào),但逗號(hào)和%s間有空格,因?yàn)镾canf是用空格來(lái)區(qū)分不同的參數(shù)的。
2、輸入的參數(shù)gates , jobs格式與Scanf中指定的fmt要一致。
3、中間的逗號(hào),Scanf會(huì)自動(dòng)格式匹配不會(huì)添加到變量中
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang中連接mysql數(shù)據(jù)庫(kù)
這篇文章主要介紹了golang中連接mysql數(shù)據(jù)庫(kù)的步驟,幫助大家更好的理解和學(xué)習(xí)go語(yǔ)言,感興趣的朋友可以了解下2020-12-12Golang設(shè)計(jì)模式之原型模式詳細(xì)講解
如果一個(gè)類的有非常多的屬性,層級(jí)還很深。每次構(gòu)造起來(lái),不管是直接構(gòu)造還是用建造者模式,都要對(duì)太多屬性進(jìn)行復(fù)制,那么有沒(méi)有一種好的方式讓我們創(chuàng)建太的時(shí)候使用體驗(yàn)更好一點(diǎn)呢? 今天的文章里就給大家介紹一種設(shè)計(jì)模式,來(lái)解決這個(gè)問(wèn)題2023-01-01go-zero讀取請(qǐng)求體出現(xiàn)EOF錯(cuò)誤的解決方法
這篇文章主要為大家詳細(xì)介紹了go-zero讀取請(qǐng)求體出現(xiàn)EOF錯(cuò)誤時(shí)如何解決,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存的方法
這篇文章主要介紹了使用Go實(shí)現(xiàn)健壯的內(nèi)存型緩存,本文比較了字節(jié)緩存和結(jié)構(gòu)體緩存的優(yōu)劣勢(shì),介紹了緩存穿透、緩存錯(cuò)誤、緩存預(yù)熱、緩存?zhèn)鬏?、故障轉(zhuǎn)移、緩存淘汰等問(wèn)題,并對(duì)一些常見(jiàn)的緩存庫(kù)進(jìn)行了基準(zhǔn)測(cè)試,需要的朋友可以參考下2022-05-05Go語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)的基本使用教程
輸入輸出在任何一門語(yǔ)言中都必須提供的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)的基本使用,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02Golang?流水線設(shè)計(jì)模式實(shí)踐示例詳解
這篇文章主要為大家介紹了Golang?流水線設(shè)計(jì)模式實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Golang 使用http Client下載文件的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Golang 使用http Client下載文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)
最近在研究go語(yǔ)言,發(fā)現(xiàn)go語(yǔ)言系統(tǒng)調(diào)用源碼只有調(diào)用函數(shù)的定義,今天通過(guò)本文給大家分享Golang標(biāo)準(zhǔn)庫(kù)syscall詳解及什么是系統(tǒng)調(diào)用,感興趣的朋友一起看看吧2021-05-05