我是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(?
所以只是想知道为什么会这样?
因为-1不能存储在uint中。
如何解决此问题(不将类型从uint更改为int(?
您不能。
(正确的做法不是使用fmt.Scan,而是始终将整行读取到字符串中并解析字符串。(