当前位置: > > > > 如何在Go中模拟sync.Map?
来源:stackoverflow
2024-04-29 23:18:39
0浏览
收藏
偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何在Go中模拟sync.Map?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容
var pageCache sync.Map func getCache(){ appCache, ok := pageCache.Load(key) }
我尝试通过 gomonkey 进行模拟。
patches := gomonkey.applymethodseq(reflect.typeof(pagecache), "加载", 输出)
goland 在 pagecache
上出现以下警告:
调用“reflect.typeof”会复制锁定值:“sync.map”类型包含“sync.mutex”,即“sync.locker”
正确答案
也许这适合您的用例?
type mockedmap struct { sync.map } func (m *mockedmap) load(key interface{}) (value interface{}, ok bool) { // do something with the call unique to this mock return m.map.load(key) }
您的实现只需要接受地图接口而不是 *sync.map
,以便它可以处理模拟和真实的事物。
type Loadable interface { Load(interface{}) (interface{}, bool) }
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持!更多关于Golang的相关知识,也可关注公众号。