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

如何检查Scanln是否在Golang中抛出错误,go,panic,Go,Panic,我是新来的。我一直在寻找答案,我知道真的有一个我就是没找到 为了更好地解释我的问题,以下是我的代码: 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)

我是新来的。我一直在寻找答案,我知道真的有一个我就是没找到

为了更好地解释我的问题,以下是我的代码:

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',我的输出将为“总和为:246”。但是,如果我将错误地输入'123j',它将不再工作,因为A和B只接受int(s)

现在,如何抓住fmt.Scanln的恐慌,或者有办法吗?提前谢谢。

。。。不要忽视它们

您忽略了两个重要的返回值。扫描计数和一个错误。。如果有的话

n, err := fmt.Scanln(&inputs.A)
…将提供您需要检查的内容
err
将告诉您需要换行,但未找到。。因为您试图将值存储在
int
中。。在提出基本问题之前,请先回答它。