如何在Go語言中讀取CSV檔案?
要在**Go**中讀取CSV檔案,首先需要使用**Go**標準庫提供的**encoding/csv**包。**encoding/csv**包包含不同的函式和方法,可用於讀取CSV檔案中的資料。
在本文中,我們將使用該包提供的**NewReader()**函式,該函式接受一個引數,即我們要開啟的檔案,然後在該檔案上呼叫**ReadAll()**方法。
除了**encoding/csv**包外,我們還將使用os包,其中包含用於開啟CSV檔案的**Open**函式。
CSV資料
假設我們有一個名為**sampleFile.csv**的CSV檔案,其中包含以下資料。(此處應插入示例CSV資料)
Series reference Description PPIQ.SQU900000 PPI output index - All industries PPIQ.SQU900001 PPI output index - All industries excl OOD PPIQ.SQUC76745 PPI published output commodity - Transport support services PPIQ.SQUCC3100 PPI output index level 3 - Wood product manufacturing PPIQ.SQUCC3110 PPI output index level 4 - Wood product manufacturing PPIQ.SQUFF0000 PPI output index level 1 - Wholesale trade PPIQ.SQUFF1000 PPI output index level 2 - Wholesale trade PPIQ.SQUFF1100 PPI output index level 3 - Wholesale trade
現在,我們要確保能夠在Go中開啟檔案,然後將CSV檔案的所有內容讀取到一個**結構體**中,然後列印這些鍵值對。請考慮以下程式碼,它將允許我們這樣做。(此處應插入Go程式碼示例)
示例
請考慮以下程式碼。
package main import ( "encoding/csv" "fmt" "os" ) type CsvDataLines struct { Column1 string Column2 string } func main() { csvData, err := ReadCsvFile("sampleFile.csv") if err != nil { panic(err) } for _, line := range csvData { data := CsvDataLines{ Column1: line[0], Column2: line[1], } fmt.Println(data.Column1 + " " + data.Column2) } } func ReadCsvFile(filename string) ([][]string, error) { // Open CSV file fileContent, err := os.Open(filename) if err != nil { return [][]string{}, err } defer fileContent.Close() // Read File into a Variable lines, err := csv.NewReader(fileContent).ReadAll() if err != nil { return [][]string{}, err } return lines, nil }
在上面的程式碼中的主函式中,我們呼叫了**ReadCsvFile**函式,在該函式中,我們傳遞檔名,然後呼叫os包的**NewReader()**函式,最後,我們呼叫**結構體**並將欄位填充到其中。
下一步是將檔案儲存為任意名稱,然後執行命令**go run main.go**。(我將檔案儲存為**main.go**)
輸出
執行上述命令後,我們將在終端中得到以下輸出。
Series reference Description PPIQ.SQU900000 PPI output index - All industries PPIQ.SQU900001 PPI output index - All industries excl OOD PPIQ.SQUC76745 PPI published output commodity - Transport support services PPIQ.SQUCC3100 PPI output index level 3 - Wood product manufacturing PPIQ.SQUCC3110 PPI output index level 4 - Wood product manufacturing PPIQ.SQUFF0000 PPI output index level 1 - Wholesale trade PPIQ.SQUFF1000 PPI output index level 2 - Wholesale trade PPIQ.SQUFF1100 PPI output index level 3 - Wholesale trade
廣告