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 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 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) }
1 回答

HUH函數
TA貢獻1836條經驗 獲得超4個贊
它抱怨地圖,因為那張地圖是零。將其初始化為:Districts
if !ok { dates[date] = DateData{ Count: 1, Districts: make(map[string]int), }
- 1 回答
- 0 關注
- 95 瀏覽
添加回答
舉報
0/150
提交
取消