snow/aid/syncer.go
2024-01-28 22:04:40 +00:00

32 lines
534 B
Go

package aid
import (
"sync"
)
type GenericSyncMap[T any] struct {
m sync.Map
}
func (s *GenericSyncMap[T]) Set(key string, value *T) {
s.m.Store(key, value)
}
func (s *GenericSyncMap[T]) Get(key string) (*T, bool) {
v, ok := s.m.Load(key)
if !ok {
return nil, false
}
return v.(*T), true
}
func (s *GenericSyncMap[T]) Delete(key string) {
s.m.Delete(key)
}
func (s *GenericSyncMap[T]) Range(f func(key string, value *T) bool) {
s.m.Range(func(key, value interface{}) bool {
return f(key.(string), value.(*T))
})
}