我是 Go 的新手。我一直在寻找答案,我知道确实有一个我只是没有找到。为了更好地解释我的问题,这是我的代码:func main() { ... inputs := new(Inputs) fmt.Println("Input two numbers: ") fmt.Scanln(&inputs.A) fmt.Scanln(&inputs.B) fmt.Println("Sum is:", inputs.A + inputs.B)}这是我的结构:type Inputs struct { A, B int}如果我为输入 A 输入“123”,为输入 B 输入另一个“123”,我将得到“ Sum is: 246 ”的输出。但是如果我错误地输入'123j',它将不再起作用,因为 A 和 B 只接受 int(s)。现在,如何从fmt.Scanln捕捉恐慌或者有什么办法?提前致谢。
1 回答
九州编程
TA贡献1785条经验 获得超4个赞
Scanln 返回值...不要忽略它们。
您忽略了两个重要的返回值。扫描计数和错误 .. 如果有。
n, err := fmt.Scanln(&inputs.A)
...会给你你需要检查的东西。err
会告诉您需要换行但未找到换行符 .. 因为您尝试将值存储在int
.. 中,并且当可用值中的最后一个字符不是换行符时会出错。
- 1 回答
- 0 关注
- 314 浏览
添加回答
举报
0/150
提交
取消