go - 如何将项目附加到地图[字符串] []结构
问题描述
我正在尝试将项目附加到我拥有的这个结构中:
type AuditSource struct {
Source map[string][]Pgm `json:"Source"`
}
type Pgm struct {
ID uint `json:"id,omitempty"`
SourceIP Inet `json:"sourceip,omitempty"`
MulticastPort int `json:"multicastport,omitempty"`
}
func NewAuditSource(lid string) (a *AuditSource) {
a = &AuditSource{
Id: make(map[string]uint64),
Source: make(map[string][]Pgm),
}
return
}
func (as *AuditSource) AuditSourceDifferences(a, b int) bool{
if a != b {
as.Source["Primary"][0].MulticastPort =a //ERRORS out every time
as.Source["Primary"][1].MulticastPort =b
}
return true
}
知道为什么每次尝试向其中添加内容时我的 struct map[string][]Pgm 都会出错吗?我可能需要初始化 []Pgm 吗?
解决方案
您似乎已经初始化了地图,因此错误很可能是因为您正在访问切片的不存在元素。初始化切片时,它是空的,并且没有第 0 个或第 1 个元素:
src:=a.Source["Primary"]
src=append(src,Pgm{MulticastPort:a})
src=append(src,Pgm{MulticastPort:b})
a.Source["Primary"]=src