nums := make([]int, 0)
{
var d int
for {
_, err := fmt.Scan(&d)
if err != nil {
break
}
nums = append(nums, d)
}
}
这个代码可以从标准输入中读取整数。但是如果标准输入看起来像是1 2 3 f4 5
,nums
将最终变成[1 2 3]
,而不会报告任何错误。
有什么最好的处理方法吗?(即,我希望从fmt.Scan
获得EOF以使循环静默退出,但所有其他错误都应报告)。
编辑: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)
}
}
err == io.EOF
。也就是说,我不关心跳过格式错误的数字,我只希望在这种情况下它不会悄悄地继续执行。 - alecbz