亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Reading CSV files
Writing CSV files
Handling CSV with headers (struct mapping)
Dealing with commas and quotes
Rumah pembangunan bahagian belakang Golang Cara bekerja dengan fail CSV di Golang

Cara bekerja dengan fail CSV di Golang

Sep 07, 2025 am 01:59 AM
golang fail csv

Go的encoding/csv包可輕松處理CSV文件讀寫操作。1. 讀取CSV文件時,使用os.Open打開文件并用csv.NewReader解析,可通過ReadAll()一次性讀取或Read()逐行讀取以節(jié)省內(nèi)存;2. 寫入CSV文件時,使用os.Create創(chuàng)建文件并用csv.NewWriter寫入數(shù)據(jù),需調(diào)用Flush()確保數(shù)據(jù)寫入,或使用WriteAll()批量寫入;3. 處理帶標(biāo)題的結(jié)構(gòu)化數(shù)據(jù)時,可手動將記錄映射到struct,如跳過首行標(biāo)題并解析字段,或使用第三方庫實現(xiàn)自動綁定;4. 對于包含逗號、換行或引號的字段,csv包會自動處理轉(zhuǎn)義,必要時可通過設(shè)置Comma字段更改編碼分隔符。Go的csv包已覆蓋大多數(shù)場景,結(jié)合外部庫可實現(xiàn)更高級功能。

How to work with CSV files in golang

Working with CSV files in Go is straightforward thanks to the built-in encoding/csv package. Whether you're reading from or writing to CSV files, Go provides clean and efficient tools. Here's how to handle common CSV operations.

Reading CSV files

To read a CSV file, you open the file and wrap a csv.Reader around it. The reader parses each line into a slice of strings.

package main

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

func main() {
    file, err := os.Open("data.csv")
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()

    reader := csv.NewReader(file)
    records, err := reader.ReadAll()
    if err != nil {
        fmt.Println("Error reading CSV:", err)
        return
    }

    for _, record := range records {
        fmt.Println(record) // Each record is a []string
    }
}
  • Use Read() instead of ReadAll() if you want to process one line at a time, which is more memory-efficient for large files.
  • The first row is treated like any other unless you handle it separately (e.g., as headers).

Writing CSV files

Writing to a CSV file is just as simple. You create a csv.Writer and feed it slices of strings.

package main

import (
    "encoding/csv"
    "os"
)

func main() {
    file, err := os.Create("output.csv")
    if err != nil {
        fmt.Println("Error creating file:", err)
        return
    }
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    data := [][]string{
        {"Name", "Age", "City"},
        {"Alice", "30", "New York"},
        {"Bob", "25", "Los Angeles"},
    }

    for _, record := range data {
        if err := writer.Write(record); err != nil {
            fmt.Println("Error writing record:", err)
            return
        }
    }
}
  • Always call writer.Flush() to ensure all data is written to the file.
  • You can write all at once using writer.WriteAll(data) if you have the full dataset ready.

Handling CSV with headers (struct mapping)

For structured data, it’s common to map CSV rows to structs. While Go’s standard library doesn’t do this automatically, you can combine Read() with manual parsing.

type Person struct {
    Name string
    Age  int
    City string
}

file, _ := os.Open("people.csv")
defer file.Close()

reader := csv.NewReader(file)
records, _ := reader.ReadAll()

var people []Person

for i, record := range records {
    if i == 0 {
        continue // Skip header
    }
    age, _ := strconv.Atoi(record[1])
    people = append(people, Person{
        Name: record[0],
        Age:  age,
        City: record[2],
    })
}
  • This approach gives you control but requires manual field mapping.
  • For automatic struct tagging, consider third-party libraries like github.com/gocarina/gocsv or github.com/jszwec/csvutil.

Dealing with commas and quotes

CSV files often contain fields with commas, newlines, or quotes. The csv.Reader and csv.Writer handle these automatically by default.

  • Fields like "Smith, John" are correctly parsed as a single field.
  • The writer will quote fields when necessary (e.g., if they contain commas or newlines).

If you need to customize the delimiter (e.g., use semicolons), change the Comma field:

reader := csv.NewReader(file)
reader.Comma = ';' // For semicolon-separated files

Same applies to csv.Writer.


Basically, Go’s encoding/csv package covers most use cases. Read line by line for large files, use structs with manual mapping for typed data, and let the package handle escaping. For more advanced scenarios like automatic struct binding, external libraries can save time.

Atas ialah kandungan terperinci Cara bekerja dengan fail CSV di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah struct struktur kosong {} yang digunakan di Golang Apakah struct struktur kosong {} yang digunakan di Golang Sep 18, 2025 am 05:47 AM

Struct {} adalah struktur tanpa medan di GO, yang menduduki bait sifar dan sering digunakan dalam senario di mana data tidak diperlukan. Ia digunakan sebagai isyarat dalam saluran, seperti penyegerakan goroutine; 2. Digunakan sebagai koleksi jenis nilai peta untuk mencapai pemeriksaan kewujudan utama dalam ingatan yang cekap; 3. Penerima kaedah tanpa stateless yang pasti, sesuai untuk suntikan pergantungan atau fungsi organisasi. Jenis ini digunakan secara meluas untuk mengekspresikan aliran kawalan dan niat yang jelas.

Bagaimana anda membaca dan menulis fail di Golang? Bagaimana anda membaca dan menulis fail di Golang? Sep 21, 2025 am 01:59 AM

Goprovidessimpleandefficientfilehandlingingtheosandbufiopackages.toreadasmallfileentirely, useos.readfile, whittloadsthecontentintomemorysafelyandautomatikManageSoperations.forlargefilesorincrementalprementalprementalprementrementprementalplocessing,

Apakah middleware dalam konteks pelayan web Golang? Apakah middleware dalam konteks pelayan web Golang? Sep 16, 2025 am 02:16 AM

MiddlewareinGowebserversarefunctionsthatinterceptHTTPrequestsbeforetheyreachthehandler,enablingreusablecross-cuttingfunctionality;theyworkbywrappinghandlerstoaddpre-andpost-processinglogicsuchaslogging,authentication,CORS,orerrorrecovery,andcanbechai

Bagaimana anda mengendalikan penutupan anggun dalam aplikasi Golang? Bagaimana anda mengendalikan penutupan anggun dalam aplikasi Golang? Sep 21, 2025 am 02:30 AM

Anggap yang mengasyik,

Apa itu CGO dan bila menggunakannya di Golang Apa itu CGO dan bila menggunakannya di Golang Sep 21, 2025 am 02:55 AM

Cgoenablesgotocallccode, membolehkanIntegrationWithClibrariesLikeopenssl, AccessTolow-levelsystemapi, danPerformanceoptimization; iTrequiresimporting "C" withcheadersincomments, usesc.function () syntax, dandemandscareffemoryMangage

Cara Membuat Marshaller/Unmarshaller tersuai untuk JSON di Golang Cara Membuat Marshaller/Unmarshaller tersuai untuk JSON di Golang Sep 19, 2025 am 12:01 AM

Melaksanakan Serialization JSON dan deserialization struktur GO yang disesuaikan untuk Marshaljson dan Unmarshaljson, sesuai untuk mengendalikan format bukan standard atau serasi dengan data lama. 2. Mengawal struktur output melalui Marshaljson, seperti format medan menukar; 3. Parsing data format khas melalui Unmarshaljson, seperti tarikh tersuai; 4. Beri perhatian untuk mengelakkan gelung tak terhingga yang disebabkan oleh panggilan rekursif, dan gunakan alias jenis untuk memintas kaedah tersuai.

Cara Menggunakan Pakej Bendera di Golang Cara Menggunakan Pakej Bendera di Golang Sep 18, 2025 am 05:23 AM

Theflagpackageingoparsescommand-lineargumentsbydefiningflagslikestring, int, orboolusingflag.stringvar, flag.intvar, dll.

Bagaimana cara mengeksport jadual Oracle ke fail CSV? Bagaimana cara mengeksport jadual Oracle ke fail CSV? Sep 22, 2025 am 03:01 AM

Jawapan: Mengeksport Jadual Oracle ke CSV menggunakan SQLPLUS, SQLDEVEPER, atau UTL_FILE. Pertama, disyorkan bahawa SQLPLUS menetapkan format dan output kili melalui arahan set; Kedua, SQLDEveloper menyediakan wizard eksport grafik; Pengguna lanjutan boleh menggunakan UTL_FILE untuk eksport program.

See all articles