我是 GoLang 的初學者,這里是教程中的示例代碼。
func main() {
for {
var name string
var email string
var userTickets uint
// ask user for info
fmt.Println("Input your Name please")
fmt.Scan(&name)
fmt.Println("Input your Email please")
fmt.Scan(&email)
// ask user for number of tickets
fmt.Println("Input number of ticket")
if _, err := fmt.Scanln(&userTickets); err != nil {
fmt.Println(err)
}
}
}
這是我發現的一件有趣的事情:如果我在“輸入票號”中輸入“-1”。因為 userTickets 是 uint,所以它會拋出一個錯誤。有了這個錯誤,它還會在下一個回圈中為“請輸入您的姓名”添加一個“輸入/下一行”。結果看起來像這樣
Input your Name please
Test
Input your Email please
Test
Input number of tickect
-1
expected integer
Input your Name please <= this input is skipped
Input your Email please
所以只是想知道為什么會這樣?我該如何解決(不將型別從 uint 更改為 int)?
uj5u.com熱心網友回復:
所以只是想知道為什么會這樣?
因為 -1 不能存盤在 uint 中。
我該如何解決(不將型別從 uint 更改為 int)?
你不能。
(正確的做法是不要使用 fmt.Scan 而是始終將整行??讀入字串并決議字串。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/436601.html
標籤:走
