我正在解析一個警察記錄csv文件。文件中有多個同一日期的匹配項。我有日期映射,它使用分配給它的DateData類型創建新的日期鍵。現在的 DateDate 只有一個鍵。每次循環中再次出現同一日期時,該鍵都會遞增?,F在我只能增加一次。計數從1到2,即使有幾十個相同的日期。Count這是出于清晰起見,我通過csv文件的較短版本獲得的輸出。user@MacBook-Pro-3 criminal-record-parser % go run main.goDoes not exist yet{1}{2}{2}{2}{2}計數應該增加到總共5,但它只增加一次 這是我在主包中的所有代碼:package mainimport ( "encoding/csv" "fmt" "io" "log" "os" "strings")type Report struct { Date string `json:"date"` Address string `json:"address"` District string `json:"district"` Beat string `json:"beat"` Grid string `json:"grid"` Crimedesc string `json:"crimedesc"` UCRCode string `json:"ucr_ncic_code"` Lat string `json:"latitude"` Lon string `json:"longitude"`}type DateData struct { Count int}func main() { reports := CreateReport() var dates = make(map[string]DateData) for _, report := range reports { dateIndex := strings.LastIndex(report.Date, "/") date := report.Date[0 : dateIndex+3] val, ok := dates[date] if !ok { fmt.Println("Does not exist yet") dates[date] = DateData{ Count: 1, } } val.Count += 1 fmt.Println(val) } fmt.Println("dates slice", dates)}func CreateReport() []Report { csvFile, err := os.Open("./files/sacramento-test.csv") if err != nil { log.Fatal("error opeining file", err) } defer csvFile.Close() reader := csv.NewReader(csvFile) var reports []Report for { line, err := reader.Read() if err == io.EOF { break } else if err != nil { log.Fatal("error reading file", err) }
1 回答

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
您沒有使用更新的計數更新您的計數。加:map
val.Count += 1fmt.Println(val) dates[date] = val // <--- add this
https://play.golang.org/p/jwDgDGDnXAw
輸出:
Does not exist yet {1} {2} {3} {4} {5} dates slice map[1/1/06:{5}]
- 1 回答
- 0 關注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消