11
nums := make([]int, 0)
{
    var d int
    for {
        _, err := fmt.Scan(&d)
        if err != nil {
            break
        }

        nums = append(nums, d)
    }
}

これは、stdin から int を読み取るために機能します。しかし、 stdin が のように見える場合1 2 3 f4 5、はエラーを報告せずnumsに終了します。[1 2 3]

これを処理する最良の方法は何ですか? (つまり、EOFfmt.Scanを黙ってループを終了させたいのですが、他のすべてのエラーは報告する必要があります)。

編集io.EOF私が必要としていたのはそれだけでした-http: //golang.org/pkg/fmt/に文書化されていることがわかりませんでした

nums := make([]int, 0)
{
    var d int
    for {
        _, err := fmt.Scan(&d)
        if err != nil {
            if err != io.EOF {
                log.Fatal(err)
            }
            break
        }

        nums = append(nums, d)
    }
}
4

1 に答える 1