feat: 新增 ScanRows 接口
This commit is contained in:
12
sync_map.go
12
sync_map.go
@@ -4,16 +4,16 @@ import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Map[T any, V any] struct {
|
||||
type SyncMap[T any, V any] struct {
|
||||
sMap sync.Map
|
||||
}
|
||||
|
||||
func (m *Map[T, V]) Store(key T, value V) {
|
||||
func (m *SyncMap[T, V]) Store(key T, value V) {
|
||||
m.sMap.Store(key, value)
|
||||
|
||||
}
|
||||
|
||||
func (m *Map[T, V]) Load(key T) (value V, ok bool) {
|
||||
func (m *SyncMap[T, V]) Load(key T) (value V, ok bool) {
|
||||
v, ok := m.sMap.Load(key)
|
||||
if ok {
|
||||
return v.(V), ok
|
||||
@@ -21,17 +21,17 @@ func (m *Map[T, V]) Load(key T) (value V, ok bool) {
|
||||
return
|
||||
}
|
||||
|
||||
func (m *Map[T, V]) Delete(key T) {
|
||||
func (m *SyncMap[T, V]) Delete(key T) {
|
||||
m.sMap.Delete(key)
|
||||
}
|
||||
|
||||
func (m *Map[T, V]) Range(f func(T, V) bool) {
|
||||
func (m *SyncMap[T, V]) Range(f func(T, V) bool) {
|
||||
m.sMap.Range(func(key, value any) bool {
|
||||
return f(key.(T), value.(V))
|
||||
})
|
||||
}
|
||||
|
||||
func (m *Map[T, V]) LoadOrStore(key T, value V) (actual V, loaded bool) {
|
||||
func (m *SyncMap[T, V]) LoadOrStore(key T, value V) (actual V, loaded bool) {
|
||||
_actual, loaded := m.sMap.LoadOrStore(key, value)
|
||||
if loaded {
|
||||
actual = _actual.(V)
|
||||
|
||||
Reference in New Issue
Block a user