* you get a note that a map must not be copied, but you won't actually be prevented from doing so?
* iteration can't use the native construct (no generic interface -> no generic iteration)
Coupled with a fairly inefficient GC it means I would need to think twice before using this.
Better if you wrap it somehow. Then it's similar to an unsafe section; you need to be careful but it's self-contained.
Especially considering that sync.Map just uses a mutex under the hood: https://github.com/golang/go/blob/master/src/sync/map.go#L19
edit: although reading the comments, apparently there are conditions where the mutex does not always need to be held. This would be an improvement over sync.RWMutex wrapping.