我正在努力學(xué)習(xí)Go。我正在努力將 CSV 記錄解組到結(jié)構(gòu)中,以便我可以創(chuàng)建插入并將這些數(shù)據(jù)導(dǎo)入到我的數(shù)據(jù)庫中。我正在尋找一種自動化編組的方法,其方式與編碼類似當(dāng)我運(yùn)行 main 時,我收到一個錯誤panic: strconv.ParseInt: parsing "id": invalid syntax我寫了一些代碼,應(yīng)該將我的 .csv 記錄解組為結(jié)構(gòu)體func Unmarshal(reader *csv.Reader, v interface{}) error { record, err := reader.Read() if err != nil { return err } s := reflect.ValueOf(v).Elem() if s.NumField() != len(record) { return &FieldMismatch{s.NumField(), len(record)} } for i := 0; i < s.NumField(); i++ { f := s.Field(i) switch f.Type().String() { case "string": f.SetString(record[i]) case "int": ival, err := strconv.ParseInt(record[i], 10, 0) if err != nil { return err } f.SetInt(ival) default: return &UnsupportedType{f.Type().String()} } } return nil}我在另一個文件中創(chuàng)建了這個結(jié)構(gòu):type InsertToDatabase struct { ID int `csv:"id"` groupId int `csv:"group_id"` Name string `csv:"name"` Status int `csv:"status"`}當(dāng) main 運(yùn)行時,它應(yīng)該運(yùn)行這段代碼,然后解析我的 .csv 文件以創(chuàng)建插入,然后在我的本地數(shù)據(jù)庫上運(yùn)行。var InsertTest InsertToDatabase reader := csv.NewReader(file) for { err := Unmarshal(reader, &InsertTest) if err == io.EOF { break } if err != nil { panic(err) } channel <- InsertTest }}有沒有辦法提高這段代碼的可讀性?另外,我應(yīng)該循環(huán)并調(diào)用.Read一次處理一行嗎?
1 回答

一只名叫tom的貓
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個贊
當(dāng)我運(yùn)行 main 時,我收到一個錯誤
恐慌:strconv.ParseInt:解析“id”:語法無效
我猜你是無意中解析了 CSV 文件的標(biāo)題行。
- 1 回答
- 0 關(guān)注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消