大家好,今天本人给大家带来文章《GoLang fmt.Scan 类型错误 跳过下一个 fmt.Scan》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
问题内容我是 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,而是始终将整行读入字符串并解析该字符串。)
今天关于《GoLang fmt.Scan 类型错误 跳过下一个 fmt.Scan》的内容介绍就到此结束,如果有什么疑问或者建议,可以在编程网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!