首页 > 解决方案 > 如何将项目附加到地图[字符串] []结构

问题描述

我正在尝试将项目附加到我拥有的这个结构中:

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 吗?

标签: gogo-map

解决方案


您似乎已经初始化了地图,因此错误很可能是因为您正在访问切片的不存在元素。初始化切片时,它是空的,并且没有第 0 个或第 1 个元素:

src:=a.Source["Primary"]
src=append(src,Pgm{MulticastPort:a})
src=append(src,Pgm{MulticastPort:b})
a.Source["Primary"]=src

推荐阅读