Go fmt包中Scan獲取標準輸入方式
Go fmt包下有三個函數(shù)
可以在程序運行過程中獲取用戶輸入。
fmt.Scan:獲取輸入fmt.Scanf:獲取輸入,但是可以指定格式,go會根據(jù)格式解析參數(shù)fmt.Scanln:獲取一行的輸入,只會獲取到一行。
示例1
我們需要和gates和jobs問個好,代碼:
fmt.Println("Please enter your names")
var a1, a2 string
fmt.Scan(&a1, &a2)
fmt.Println("hello,", a1, "and", a2)運行后,在窗口中輸入:gates jobs
輸出:
hello, gates and jobs
可以看出,go把輸入的參數(shù)按空格分開后,分別賦值給了a1和a2。
整體運行結(jié)果(第二行是運行時用戶輸入的):
Please enter your names
gates jobs
hello, gates and jobs
如果我們輸入時換行輸入:
Please enter your names
gates
jobs
hello, gates and jobs
可以看出gates和jobs中間是敲了回車的,這是Scan和Scanln的區(qū)別。Scan回車還可以繼續(xù)接受,Scanln只要收到回車就不會繼續(xù)接收輸入了。
示例2
Scanln和Scan非常類似,只是Scanln只會接受一個回車,收到回車就掃描結(jié)束了。
var c1, c2 string
fmt.Scanln(&c1, &c2)
fmt.Println("hello,", c1, "and", c2)運行結(jié)果:
Please enter your names
gates jobs
hello, gates and jobs
如果換行輸入,結(jié)果是:
Please enter your names
gates
hello, gates and
因為輸入了gates后,回車,結(jié)果就打印出來了,沒機會再輸入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)運行結(jié)果:
Please enter your names
gates , jobs
hello, gates and jobs
上面的示例,需要注意兩點:
1、Scanf中間有一個逗號,但逗號和%s間有空格,因為Scanf是用空格來區(qū)分不同的參數(shù)的。
2、輸入的參數(shù)gates , jobs格式與Scanf中指定的fmt要一致。
3、中間的逗號,Scanf會自動格式匹配不會添加到變量中
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
go-zero讀取請求體出現(xiàn)EOF錯誤的解決方法
這篇文章主要為大家詳細介紹了go-zero讀取請求體出現(xiàn)EOF錯誤時如何解決,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-02-02
Golang 使用http Client下載文件的實現(xiàn)方法
今天小編就為大家分享一篇Golang 使用http Client下載文件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Golang標準庫syscall詳解(什么是系統(tǒng)調(diào)用)
最近在研究go語言,發(fā)現(xiàn)go語言系統(tǒng)調(diào)用源碼只有調(diào)用函數(shù)的定義,今天通過本文給大家分享Golang標準庫syscall詳解及什么是系統(tǒng)調(diào)用,感興趣的朋友一起看看吧2021-05-05

