Skip to content

Files

Latest commit

author
alex
Mar 23, 2023
59bf7ad · Mar 23, 2023

History

History

syncmap

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 17, 2023
Mar 23, 2023

Manual

支持泛型的 sync.Map

创建一个 map 实例

func New[Tk any, Tv any]() *Map[Tk, Tv] 

API

用法等同 sync.Map 下同名方法,不赘述

func (r *Map[Tk, Tv]) Store(name Tk, value Tv)
func (r *Map[Tk, Tv]) LoadOrStore(name Tk, value Tv) (v Tv, ok bool)
func (r *Map[Tk, Tv]) Load(name Tk) (v Tv)
func (r *Map[Tk, Tv]) Range(fn func (Tk, Tv) bool)
func (r *Map[Tk, Tv]) LoadAndDelete(name Tk) (v Tv)
func (r *Map[Tk, Tv]) Delete(name Tk)

判断 Key 是否存在

补充方法,本质上是判断是否能进行 Load

func (r *Map[Tk, Tv]) Exist(name Tk) bool

示例

package main

import (
	"fmt"

	"github.com/o8x/jk/syncmap"
)

func main() {
	m := syncmap.New[string, int]()
	m.Store("k", 1)
	fmt.Println(m.Load("k"))

	m.Store("k", 9)
	fmt.Println(m.Load("k"))

	m.Store("k2", 2)
	fmt.Println(m.Load("k2"))

	m.LoadOrStore("k3", 3)
	fmt.Println(m.Load("k3"))
	m.LoadOrStore("k3", 5)
	fmt.Println(m.Load("k3"))

	fmt.Println(m.Exist("k3"))
	m.Delete("k3")
	fmt.Println(m.Exist("k3"))
}

运行它

> go run .
1
9
2
3
3
true
false