// Package counter 提供线程安全的 string→int64 键值计数器,适合并发计数场景。 // // 迁移自 go-hua/single 并更名(原类型 Single → Counter),方法签名不变。 package counter import "sync" // Counter 线程安全的键值计数器(使用前需调用 Init) type Counter struct { mu sync.Mutex values map[string]int64 } // Init 初始化内部存储(每个 Counter 实例使用前调用一次) func (c *Counter) Init() { c.values = make(map[string]int64) } // Get 读取指定 key 的值,key 不存在返回 0 func (c *Counter) Get(key string) int64 { c.mu.Lock() defer c.mu.Unlock() return c.values[key] } // Incr 按指定增量累加 key 的值,返回累加后的值 func (c *Counter) Incr(key string, value int64) int64 { c.mu.Lock() defer c.mu.Unlock() c.values[key] += value return c.values[key] } // Set 覆盖指定 key 的值,返回旧值 func (c *Counter) Set(key string, val int64) int64 { c.mu.Lock() defer c.mu.Unlock() old := c.values[key] c.values[key] = val return old }