使用 GoLang 从文件中读取字符串、整数和双精度数

当我的数据文件如下所示时,如何从 Google Go 中的文件读取数据:


SomeString      200.0   2

OtherString     100.6   9

OneMoreString   550.8   1

(字符串、双精度和整数)。我试过了bufio.readLine,bufio.readString但这些正在阅读整行,而我需要单独的变量。


慕村225694
浏览 341回答 2
2回答

Cats萌萌

例如,package mainimport (    "bufio"    "fmt"    "os"    "strconv"    "strings")type Data struct {    AString string    AFloat  float64    AnInt   int64}func ParseLine(line string) (*Data, error) {    data := new(Data)    var err error    text := strings.TrimRight(line, " ")    i := strings.LastIndex(text, " ")    i++    text = text[i:]    data.AnInt, err = strconv.ParseInt(text, 10, 64)    if err != nil {        return nil, err    }    line = line[:i]    text = strings.TrimRight(line, " ")    i = strings.LastIndex(text, " ")    i++    text = text[i:]    data.AFloat, err = strconv.ParseFloat(text, 64)    if err != nil {        return nil, err    }    line = line[:i]    data.AString = line    return data, nil}func main() {    f, err := os.Open("data.txt")    if err != nil {        fmt.Fprintln(os.Stderr, "opening input:", err)        return    }    scanner := bufio.NewScanner(f)    for scanner.Scan() {        line := scanner.Text()        data, err := ParseLine(line)        if err != nil {            fmt.Fprintln(os.Stderr, "reading input:", err, ":", line)            continue        }        fmt.Println(*data)    }    if err := scanner.Err(); err != nil {        fmt.Fprintln(os.Stderr, "reading input:", err)    }}输入(data.txt):Some String       200.0   2Other String      100.6   9One More String   550.8   1输出:{Some String        200 2}{Other String       100.6 9}{One More String    550.8 1}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go