Я занимаюсь разработкой проекта, в котором мне нужно объявить следующее:
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. Замена append прямой инициализацией (mapDataPayload [rcvData.Topic] [0]) немедленно вызовет ошибку.
Итак, что я хочудля этого нужно заполнить карту [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...