CSV 레코드를 Go 구조체로 비정렬화
질문:
어떻게 자동으로 레코드를 비정렬화할 수 있습니까? CSV 파일에서 Go로 구조체?
예를 들어 다음 Go 구조체를 고려하세요.
type Test struct { Name string Surname string Age int }
그리고 레코드가 포함된 CSV 파일:
John;Smith;42 Piter;Abel;50
이를 비정렬화하는 효율적인 방법이 있습니까? 각 레코드를 수동으로 구문 분석하고 할당하지 않고 레코드를 구조체로 가치?
답변:
예, gocarina/gocsv를 활용하는 것이 효과적인 방법입니다. 인코딩/json에서 제공하는 기능과 유사한 사용자 정의 유형에 대한 역마샬링 및 마샬링 기능을 생성할 수 있습니다.
예:
type Client struct { Id string `csv:"client_id"` // .csv column headers 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) } }
gocsv 사용 , 사용자 정의 unmarshaller 및 marshaller 함수가 클라이언트 유형에 대해 정의됩니다. 이러한 함수는 CSV 형식과 Go 구조체 사이를 효과적으로 변환하여 역마샬링 프로세스를 간단하고 효율적으로 만듭니다.
위 내용은 CSV 데이터를 Go 구조체로 효율적으로 비정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!