这似乎几乎是正确的,但是它在换行符上令人窒息。最好的方法是什么?
package main
import (
"fmt"
"strings"
)
func main() {
var z float64
var a []float64
// \n gives an error for Fscanf
s := "3.25 -12.6 33.7 \n 3.47"
in := strings.NewReader(s)
for {
n, err := fmt.Fscanf(in, "%f", &z)
fmt.Println("n", n)
if err != nil {
break
}
a = append(a, z)
}
fmt.Println(a)
}
输出:
n 1
n 1
n 1
n 0
[3.25 -12.6 33.7]
更新:
请参阅下面来自@Atom的答案。我发现另一种方法是在错误是EOF时中断,否则就忽略它。我知道这只是黑客,但我控制源代码。
_, err := fmt.Fscanf(in, "%f", &z)
if err == os.EOF { break }
if err != nil { continue }
莫回无
相关分类