为什么结构内的地图不接受赋值

type DateData struct {

    Count     int

    Districts map[string]int

}

这是我遇到问题的结构。


var dates = make(map[string]DateData)

这就是我初始化和使用所述结构的方式


为什么我会收到错误 panic: assignment to entry in nil map


当我尝试为地区地图分配一个值时,如下所示:日期[“1/1/06”。。选区 [“1”] = 1 我无法为“选区”字段赋值


以下是上下文的完整代码:


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

    Districts map[string]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 {

            dates[date] = DateData{

                Count: 1,

            }


        } else {

            val.Count += 1

            dates[date] = val

        }


    }


    dates["1/1/06"].Districts["1"] = 1


    fmt.Println("dates slice", dates)

    // fmt.Println("dates slice", dates)


}


func CreateReport() []Report {

    // csvFile, err := os.Open("./files/sacramento-jan-2006.csv")

    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)

        }



慕容708150
浏览 106回答 1
1回答

HUH函数

它抱怨地图,因为那张地图是零。将其初始化为:Districts        if !ok {             dates[date] = DateData{                 Count: 1,                 Districts: make(map[string]int),             }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go