如何从读取文件中 return 一个数组?

How to return an array from reading a file?

我在 CSV 文件中有两列。我使用 SearchData() 函数仅访问第一列。

问题是我想以数组形式访问数据,但是当我在 AccessData() 函数中 return 数组字符串并在 [=13] 中写入 products[0] 时=],它只通过删除括号符号 [] 给我所有数据,当我写 products[1] 时,它给我 runtime error: index out of range [1] with length 1.

要求的结果

products[0] = First Item
products[1] = Second Item
...
so on

代码

func AccessData(number int) string {
    content, err := ioutil.ReadFile("products/data1.csv")
    if err != nil {
        log.Fatal(err)
    }
    Data := string(content)
    sliceData := strings.Split(Data, ",")
    return sliceData[number]
}

func SearchData(){
    for i := 0; i <= 34; i = i + 2 {
        products := AccessData(i)
        fmt.Println(products)
    }
}

这应该可以解决问题:

func firstColumns(filename string) []string {
    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    defer f.Close()

    r := csv.NewReader(f)

    var result []string
    for {
        row, err := r.Read()
        if err != nil {
            if err == io.EOF {
                break
            }

            log.Fatal(err)
        }

        if len(row) > 0 {
            result = append(result, row[0])
        }
    }

    return result
}

func main() {
    data := firstColumns("products/data1.csv")
    fmt.Println(data)
    fmt.Println(data[1])
}

这会将每一行的第一列变成一个[]string可以访问的索引。

输出为:

[First item Second item]
Second item