我是新手。我一直在寻找答案,我知道确实有一个我只是没有找到答案。

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

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的恐慌或是否有办法?提前致谢。

最佳答案

Scanln returns values ...不要忽略它们。

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

n, err := fmt.Scanln(&inputs.A)

...会给您您需要检查的内容。 err会告诉您期望换行,但未找到换行..因为您已尝试将值存储在int中,并将其存储在errors when the last character in the available value isn't a newline中。

关于go - 如何检查Scanln是否在Golang中引发错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29096916/

10-09 02:19