如何检查 Scanln 在 Golang 中是否抛出错误

我是 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捕捉恐慌或者有什么办法?提前致谢。


蛊毒传说
浏览 318回答 1
1回答

九州编程

Scanln 返回值...不要忽略它们。您忽略了两个重要的返回值。扫描计数和错误 .. 如果有。n, err := fmt.Scanln(&inputs.A)...会给你你需要检查的东西。err会告诉您需要换行但未找到换行符 .. 因为您尝试将值存储在int.. 中,并且当可用值中的最后一个字符不是换行符时会出错。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go