- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
我正在尝试构建一个string(key)切片,其值为struct。IDE没有给我错误消息,但当我尝试向切片添加项时,Go将返回以下错误:
对nilMap表项的赋值
有谁知道我该怎么做吗?
type CrawlerChanges struct {
Id int `gorm:"AUTO_INCREMENT"`
CompanyId int `gorm:"AUTO_INCREMENT"`
Page string `gorm:"AUTO_INCREMENT" json:"page"`
Changes string `gorm:"not null" json:"changes"`
CreatedAt time.Time `gorm:"DEFAULT:current_timestamp" json:"createdAt"`
UpdatedAt time.Time `gorm:"DEFAULT:null" json:"updatedAt"`
DeletedAt time.Time `gorm:"DEFAULT:null" json:"deletedAt"`
}
type Changes struct {
Dates map[string][]models.CrawlerChanges `json:"dates"`
}
for i, _ := range changes {
y := strconv.Itoa(changes[i].CreatedAt.Year())
m := changes[i].CreatedAt.Month().String()
d := strconv.Itoa(changes[i].CreatedAt.Day())
c.Dates[y+m+d] = append(c.Dates[y+m+d], models.CrawlerChanges{
Id: changes[i].Id,
CompanyId: changes[i].CompanyId,
Page: changes[i].Page,
Changes: changes[i].Changes,
CreatedAt: changes[i].CreatedAt,
})
}
我明白我试图附加到(我认为)不存在的东西上,但是在附加之前"创建"它的诀窍是什么?
1条答案
按热度按时间kknvjkwl1#
看起来您的
c.Dates
是一张Map。你在初始化它之前给它赋值。
所以在赋值之前先初始化这个Map。
例如,
c.Dates = make(map[string]models.CrawlerChanges, 0)