Golang: lire les entrées de stdin jusqu'à EOF tout en signalant des erreurs de format

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

        nums = append(nums, d)
    }
}

Cela fonctionne à lire dans les ints de stdin. Mais si stdin ressemble 1 2 3 f4 5, nums sera [1 2 3] sans signaler toute erreur.

Quelle est la meilleure façon de gérer cela? (C'est à dire, je veux EOF fmt.Scan pour sortir silencieusement de la boucle, mais toutes les autres erreurs doivent être signalées).

modifier:io.EOF était tout ce que j'avais -- je n'avais pas trouvé que la documentation de 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)
    }
}
9
go
demandé sur Alec 2013-10-10 22:11:44

1 réponses

vous pouvez le faire comme ceci-quand vous recevez un mauvais nombre, lisez la chose espace séparé suivante. Définir un indicateur ou sur une erreur ou faire une liste des erreurs à signaler à la fin.