Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyahmarshal Data CSV ke dalam Go Structs dengan Cekap?

Bagaimanakah Saya Boleh Menyahmarshal Data CSV ke dalam Go Structs dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2024-12-11 15:32:17267semak imbas

How Can I Efficiently Unmarshal CSV Data into Go Structs?

Unmarshal CSV Records into Go Structs

Dalam Go, terdapat keperluan biasa untuk menyahsiri rekod CSV ke dalam struktur tersuai. Walaupun pakej "pengekodan/csv" menyediakan bacaan CSV asas, ia memerlukan penghuraian manual dan penukaran kepada struct. Nasib baik, terdapat penyelesaian alternatif yang memudahkan proses ini.

Salah satu penyelesaian sedemikian ialah gocarina/gocsv, yang mengikut pendekatan yang sama seperti pakej "pengekodan/json" untuk mengendalikan struct tersuai. Ia juga membenarkan marshalling dan unmarshalling tersuai untuk jenis tertentu.

Pertimbangkan contoh:

type Client struct {
    Id      string `csv:"client_id"`
    Name    string `csv:"client_name"`
    Age     string `csv:"client_age"`
}

func main() {
    in, err := os.Open("clients.csv")
    if err != nil {
        panic(err)
    }
    defer in.Close()

    clients := []*Client{}

    if err := gocsv.UnmarshalFile(in, &clients); err != nil {
        panic(err)
    }
    for _, client := range clients {
        fmt.Println("Hello, ", client.Name)
    }
}

Di sini, gocsv.UnmarshalFile mengisi terus bahagian pelanggan dengan struct Pelanggan yang dinyahsiri. Ini memudahkan proses unmarshalling, menjadikannya lebih intuitif dan mudah daripada menggunakan kaedah "pengekodan/csv" standard.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal Data CSV ke dalam Go Structs dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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