为了账号安全,请及时绑定邮箱和手机立即绑定

如何将值重新分配给映射内部的结构(Golang)

如何将值重新分配给映射内部的结构(Golang)

Go
千万里不及你 2022-08-24 19:03:03
我正在解析一个警察记录csv文件。文件中有多个同一日期的匹配项。我有日期映射,它使用分配给它的DateData类型创建新的日期键。现在的 DateDate 只有一个键。每次循环中再次出现同一日期时,该键都会递增。现在我只能增加一次。计数从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}]


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信