sync.Map in Go 1.9 is a little low on examples/doc in the wild, so I thought I should ask here.
The new type is promoted as a replacement for RWMutex in mostly read use cases with stable keys. I assume that a typical in memory cache would fit that description.
With RWMutex, if the cost of creating the cache item is high, I would maybe do something ala:
mu.RLock()
// Check cache
mu.RUnclock()
// Return if found
// If Not found:
mu.Lock()
defer mu.Unlock()
// Double check cache, return if found
// Create item and put in cache
I don't see how the above can be written with a sync.Map without adding a mutex.
bep