我在 CSV 檔案中有兩列。我只使用該SearchData()函式訪問第一列。
問題是我想以陣列的形式訪問資料,但是當我在AccessData()函式中回傳一個陣列字串并在 中寫入products[0]時SearchData(),它通過僅洗掉括號符號為我提供了所有資料[],當我寫入時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)
}
}
uj5u.com熱心網友回復:
這應該可以解決問題:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/414534.html
標籤:
下一篇:在Go中就地解組為切片型別
