Я пытаюсь читать и писать две отдельные карты в одном диапазоне l oop. Проблема в том, что вывод не согласован между вызовами. Я пытаюсь создать REST API, используя go chi.
var mapMutex = sync.RWMutex{}
// Root map
var rootLocationMap = make(map[int]*LocationViewDto)
// Child map
var childLocationMap = make(map[int]*LocationViewDto)
// Insert map here
for _, location := range childLocationMap {
mapMutex.RLock()
temp, isExist := rootLocationMap[*location.ParentId]
mapMutex.RUnlock()
if isExist {
temp.Children = append(temp.Children, *location)
mapMutex.Lock()
rootLocationMap[*location.ParentId] = temp
mapMutex.Unlock()
} else {
mapMutex.RLock()
temp, isExist = childLocationMap[*location.ParentId]
mapMutex.RUnlock()
temp.Children = append(temp.Children, *location)
mapMutex.Lock()
childLocationMap[*location.ParentId] = temp
mapMutex.Unlock()
}
}