我正在解析一个警察记录csv文件。文件中有多个同一日期的匹配项。我有日期映射,它使用分配给它的DateData类型创建新的日期键。现在的 DateDate 只有一个键。每次循环中再次出现同一日期时,该键都会递增。现在我只能增加一次。计数从1到2,即使有几十个相同的日期。Count
这是出于清晰起见,我通过csv文件的较短版本获得的输出。
user@MacBook-Pro-3 criminal-record-parser % go run main.go
Does not exist yet
{1}
{2}
{2}
{2}
{2}
计数应该增加到总共5,但它只增加一次 这是我在主包中的所有代码:
package main
import (
"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)
}
ABOUTYOU
相关分类