질문:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!