试图从 csv 文件中读取date和读取number,所以我有以下结构
type Transaction struct {
Warehouse string `json:"warehouse"`
Item string `json:"item"`
Movement string `json:"movement"`
Batch string `json:"batch"`
Date time.Time `json:"transaction_data"`
Quantity uint64 `json:"quantity"`
}
type Transactions struct {
header []string
lines []Transaction
}
并进行如下阅读:
func main() {
// Reading csv file thread > START //
pairs := []Pair{{"m", 1}, {"d", 0}, {"c", 2}}
fmt.Println(pairs)
// Sort by Key
sort.Sort(ByKey(pairs))
fmt.Println(pairs)
pairs = append(pairs, Pair{"h", 5})
fmt.Println(pairs)
// Reading csv file thread > START //
input := make(chan Transactions)
go func(input_file string) {
var trx Transactions
fr, err := os.Open(input_file)
failOnError(err)
defer fr.Close()
r := csv.NewReader(fr)
rows, err := r.ReadAll()
failOnError(err)
trx.header = rows[0]
for _, row := range rows[1:] {
trx.lines = append(trx.lines, Transaction{
Warehouse: strings.TrimSpace(row[0]),
Item: strings.TrimSpace(row[1]),
Movement: strings.TrimSpace(row[2]),
Batch: strings.TrimSpace(row[3]),
Date: time.Parse("%Y-%m-%d", row[4]), // multiple-value in single-value context error
Quantity: (strconv.ParseFloat(row[5], 64) * 1000).(uint64), // multiple-value in single-value context error
})
}
peopleJson, _ := json.Marshal(trx.lines)
fmt.Println(string(peopleJson))
input <- trx // send data to channel read
}("trx.csv")
<-input // rceive from channel 'read' and assign value to new data variable
// Reading csv file thread < END //
}
慕沐林林
相关分类