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

我正在解析一个警察记录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)

        }



千万里不及你
浏览 106回答 1
1回答

ABOUTYOU

您没有使用更新的计数更新您的计数。加:mapval.Count&nbsp;+=&nbsp;1fmt.Println(val) dates[date]&nbsp;=&nbsp;val&nbsp;//&nbsp;<---&nbsp;add&nbsp;thishttps://play.golang.org/p/jwDgDGDnXAw输出:Does&nbsp;not&nbsp;exist&nbsp;yet {1} {2} {3} {4} {5} dates&nbsp;slice&nbsp;map[1/1/06:{5}]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go