登录
首页 >  Golang >  Go问答

如何在Go中模拟sync.Map?

来源:stackoverflow

时间:2024-04-29 23:18:39 454浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何在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学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>