diff --git a/utils/synchronization/map.go b/utils/synchronization/map.go index faa0486..66ed3a0 100644 --- a/utils/synchronization/map.go +++ b/utils/synchronization/map.go @@ -247,6 +247,18 @@ func (slf *Map[Key, Value]) Size() int { return len(slf.data) } +// GetOne 获取一个 +func (slf *Map[Key, Value]) GetOne() (value Value) { + if !slf.atom { + slf.lock.RLock() + defer slf.lock.RUnlock() + } + for _, v := range slf.data { + return v + } + return value +} + func (slf *Map[Key, Value]) MarshalJSON() ([]byte, error) { m := slf.Map() return json.Marshal(m) diff --git a/utils/synchronization/map_readonly.go b/utils/synchronization/map_readonly.go index e6ce868..2a9181d 100644 --- a/utils/synchronization/map_readonly.go +++ b/utils/synchronization/map_readonly.go @@ -14,4 +14,5 @@ type MapReadonly[Key comparable, Value any] interface { Slice() []Value Map() map[Key]Value Size() int + GetOne() (value Value) }