我正在开发一个项目,我需要声明以下内容:
mapDataPayload := make(map[string][]*dataPayload)
如果我向它附加数据,它会正常工作。
mapDataPayload := make(map[string][]*dataPayload)
for {
select {
case rcvData := <-ch:
mapDataPayload[rcvData.Topic] = append(
mapDataPayload[rcvData.Topic],
&dataPayload{Message: rcvData.Message},
)
}
}
但是,我想设置一个大小限制。随着追加,它会不停地增长。我想要实现的是当达到限制(最大值:100)时,它会覆盖索引 0、1、2 ...
mapDataPayload[rcvData.Topic][0]
mapDataPayload[rcvData.Topic][1]
我尝试用以下方法初始化以下内容:
make(map[string][]*dataPayload, 100)
for {
select {
case rcvData := <-ch:
mapDataPayload[rcvData.Topic][0] = &dataPayload{Message: rcvData.Message}
}
}
但是,如果我检查长度,它将返回 0。用直接初始化 (mapDataPayload[rcvData.Topic][0]) 替换 append 会立即导致错误。
所以,我想要做的是用一个限制填充 map[string][]*dataPayload,例如这个数据:
{
"test1": {
"0": {
"Message": "Heasdllo"
},
"1": {
"Message": "Hel132lo"
},
"2": {
"Message": "Hedsallo"
}
},
"testanother": {
"0": {
"Message": "adsad"
},
"1": {
"Message": "Helwqe2lo"
},
"2": {
"Message": "Hel21321lo"
},
"3": {
"Message": "Hel21321lo"
}
}
}
当它达到数字 100 时,我想回到数字 0、1、2...
慕尼黑5688855
aluckdog
相关分类