gpt4 book ai didi

go - 在 Go 中读取 CSV 文件

转载 作者:IT老高 更新时间:2023-10-28 13:05:38 26 4
gpt4 key购买 nike

这是一个读取 CSV 文件的代码片段:

func parseLocation(file string) (map[string]Point, error) {
f, err := os.Open(file)
defer f.Close()
if err != nil {
return nil, err
}
lines, err := csv.NewReader(f).ReadAll()
if err != nil {
return nil, err
}
locations := make(map[string]Point)
for _, line := range lines {
name := line[0]
lat, laterr := strconv.ParseFloat(line[1], 64)
if laterr != nil {
return nil, laterr
}
lon, lonerr := strconv.ParseFloat(line[2], 64)
if lonerr != nil {
return nil, lonerr
}
locations[name] = Point{lat, lon}
}
return locations, nil
}

有没有办法提高这段代码的可读性? if 和 nil 噪声。

最佳答案

Go 现在为此提供了一个 csv 包。它是encoding/csv。您可以在此处找到文档:https://golang.org/pkg/encoding/csv/

文档中有几个很好的例子。这是我创建的用于读取 csv 文件并返回其记录的辅助方法。

package main

import (
"encoding/csv"
"fmt"
"log"
"os"
)

func readCsvFile(filePath string) [][]string {
f, err := os.Open(filePath)
if err != nil {
log.Fatal("Unable to read input file " + filePath, err)
}
defer f.Close()

csvReader := csv.NewReader(f)
records, err := csvReader.ReadAll()
if err != nil {
log.Fatal("Unable to parse file as CSV for " + filePath, err)
}

return records
}

func main() {
records := readCsvFile("../tasks.csv")
fmt.Println(records)
}

关于go - 在 Go 中读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24999079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com