Go fmt包中Scan獲取標(biāo)準(zhǔn)輸入方式
Go fmt包下有三個函數(shù)
可以在程序運(yùn)行過程中獲取用戶輸入。
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)
運(yùn)行后,在窗口中輸入:gates jobs
輸出:
hello, gates and jobs
可以看出,go把輸入的參數(shù)按空格分開后,分別賦值給了a1和a2。
整體運(yùn)行結(jié)果(第二行是運(yùn)行時用戶輸入的):
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)
運(yùn)行結(jié)果:
Please enter your names
gates jobs
hello, gates and jobs
如果換行輸入,結(jié)果是:
Please enter your names
gates
hello, gates and
因為輸入了gates后,回車,結(jié)果就打印出來了,沒機(jī)會再輸入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中間有一個逗號,但逗號和%s間有空格,因為Scanf是用空格來區(qū)分不同的參數(shù)的。
2、輸入的參數(shù)gates , jobs格式與Scanf中指定的fmt要一致。
3、中間的逗號,Scanf會自動格式匹配不會添加到變量中
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。