Documentation
¶
Overview ¶
A typed, thread-safe map built on top of sync.Map, using generics.
Index ¶
- type SyncMap
- func (sm *SyncMap[K, V]) CompareAndDelete(key K, old V) (deleted bool)
- func (sm *SyncMap[K, V]) CompareAndSwap(key K, old V, new V) (swapped bool)
- func (sm *SyncMap[K, V]) Delete(key K)
- func (sm *SyncMap[K, V]) Keys() []K
- func (sm *SyncMap[K, V]) Len() int
- func (sm *SyncMap[K, V]) Load(key K) (V, bool)
- func (sm *SyncMap[K, V]) LoadAndDelete(key K) (V, bool)
- func (sm *SyncMap[K, V]) LoadOrStore(key K, value V) (V, bool)
- func (sm *SyncMap[K, V]) Range(fn func(key K, value V) bool)
- func (sm *SyncMap[K, V]) Store(key K, value V)
- func (sm *SyncMap[K, V]) Swap(key K, value V) (previous V, loaded bool)
- func (sm *SyncMap[K, V]) Values() []V
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type SyncMap ¶
type SyncMap[K comparable, V any] struct { // contains filtered or unexported fields }
SyncMap provides a thread-safe generic map built on top of sync.Map.
Example (Range) ¶
ExampleSyncMap_range demonstrates how to iterate over the map
package main
import (
"fmt"
"sort"
syncmap "github.com/donomii/genericsyncmap"
)
func main() {
m := syncmap.NewSyncMap[string, string]()
m.Store("LOC", "USA")
m.Store("LANG", "EN")
// Collect keys for consistent output order
var keys []string
m.Range(func(key string, value string) bool {
keys = append(keys, key)
return true
})
sort.Strings(keys)
for _, k := range keys {
v, _ := m.Load(k)
fmt.Printf("%s: %s\n", k, v)
}
}
Output: LANG: EN LOC: USA
Example (Usage) ¶
ExampleSyncMap_usage demonstrates basic usage of SyncMap
package main
import (
"fmt"
syncmap "github.com/donomii/genericsyncmap"
)
func main() {
m := syncmap.NewSyncMap[string, int]()
m.Store("apple", 10)
m.Store("banana", 20)
if val, ok := m.Load("apple"); ok {
fmt.Printf("apple: %d\n", val)
}
m.Delete("banana")
}
Output: apple: 10
func NewSyncMap ¶
func NewSyncMap[K comparable, V any]() *SyncMap[K, V]
NewSyncMap creates a new thread-safe generic map
func (*SyncMap[K, V]) CompareAndDelete ¶
CompareAndDelete deletes the entry for key if its value is equal to old. The old value must be of a comparable type.
func (*SyncMap[K, V]) CompareAndSwap ¶
CompareAndSwap swaps the old and new values for key if the value stored in the map is equal to old. The old value must be of a comparable type.
func (*SyncMap[K, V]) LoadAndDelete ¶
LoadAndDelete gets existing value and deletes it, returns value and whether it was loaded (deleted)
func (*SyncMap[K, V]) LoadOrStore ¶
LoadOrStore gets existing value or stores new one, returns actual value and whether it was loaded
func (*SyncMap[K, V]) Range ¶
Range calls fn for each key-value pair. Returning false quits the iteration
func (*SyncMap[K, V]) Store ¶
func (sm *SyncMap[K, V]) Store(key K, value V)
Store sets a key-value pair