feat: 新增 ScanRows 接口

This commit is contained in:
2024-09-18 16:51:30 +08:00
parent 030343bc01
commit 1f9ff72824
9 changed files with 311 additions and 102 deletions

View File

@@ -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)