>백엔드 개발 >Golang >CSV 데이터를 Go 구조로 효율적으로 역직렬화하는 방법은 무엇입니까?

CSV 데이터를 Go 구조로 효율적으로 역직렬화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-02 18:24:12431검색

How to Efficiently Deserialize CSV Data into Go Structures?

질문:

CSV 레코드를 Go 구조로 효율적으로 역직렬화하려면 어떻게 해야 합니까?

문제 설명:

맞춤형 Go 구조가 있다고 가정해 보겠습니다. 이름, 성, 나이 필드를 사용하여 테스트합니다. 다음 형식의 레코드가 포함된 CSV 파일이 있습니다.

John;Smith;42
Piter;Abel;50

수동 역직렬화 작업에 의존하지 않고 이러한 레코드를 테스트 구조의 인스턴스로 자동 역마샬링하려면 어떻게 해야 합니까?

답변:

역직렬화 프로세스를 단순화하려면 gocarina/gocsv 사용을 고려하세요. 도서관. gocsv는 인코딩/json 패키지와 유사한 기능을 제공하지만 특히 CSV 데이터에 적합합니다.

다음은 gocsv를 사용하는 예입니다.

package main

import (
    "fmt"
    "log"
    "os"

    "github.com/gocarina/gocsv"
)

type Test struct {
    Name    string `csv:"Name"`
    Surname string `csv:"Surname"`
    Age     int    `csv:"Age"`
}

func main() {
    // Open CSV file for reading
    in, err := os.Open("test.csv")
    if err != nil {
        log.Fatal(err)
    }
    defer in.Close()

    // Declare a slice to hold the Test structures
    var tests []Test

    // Unmarshal the CSV records into the Test structures
    if err := gocsv.UnmarshalFile(in, &tests); err != nil {
        log.Fatal(err)
    }

    // Print the unmarshaled data
    for _, test := range tests {
        fmt.Printf("Name: %s, Surname: %s, Age: %d\n", test.Name, test.Surname, test.Age)
    }
}

이 예에서는 gocsv가 역직렬화 프로세스를 처리합니다. CSV 레코드를 Go 구조로 변환하는 작업을 단순화합니다. 테스트 구조에서 사용자 정의 필드 태그를 사용하여 각 필드에 대한 CSV 열 헤더를 지정하여 정확한 매핑을 보장할 수 있습니다.

위 내용은 CSV 데이터를 Go 구조로 효율적으로 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.