要求: 支持并发读写,避免重复计算(类似 sync.Once 但可更新)。
代码如下:
type Cache struct {
mu sync.Mutex
items map[string]interface{}
}
func (c *Cache) Get(key string, compute func() interface{}) interface{} {
c.mu.Lock()
defer c.mu.Unlock()
if val, ok := c.items[key]; ok {
return val
}
val := compute()
c.items[key] = val
return val
}
- 知识星球:云原生 AI 实战营,10+ 高质量体系课( Go、云原生、AI Infra)、15+ 实战项目,助你提高技术天花板,入大厂、拿高薪;
- 微信GZH:令飞编程,分享 Go、云原生、AI Infra 相关技术。回复「资料」免费下载 Go、云原生、AI 等学习资料;
- 哔哩哔哩:令飞编程 ,分享技术、职场、面经等,并有免费直播课「云原生AI高新就业课」,大厂级项目实战到大厂面试通关。