为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的快速映射指针相等

Go中的快速映射指针相等

Go
子衿沉夜 2022-05-23 15:05:06
我有一个热代码路径(100k 次运行),可选地需要用一些值填充地图。我正在尝试对其进行优化,其中可以提供帮助的事情之一是惰性内存初始化。我目前的代码是mystruct struct {   mymap}for i range 10000 {    mystruct = {}    mystruct.mymap = map[string]string    if variable_exists {        mystruct.mymap[variable] = blah    }}然后我稍后在大量范围语句中使用此变量,因此必须对其进行初始化。但是绝大多数时候地图只是空着,所以如果我不需要初始化地图只是为了让它空着,那就太好了。所以我的希望是mystruct struct {   mymap}default_map = make(map[string]string)for i range 10000 {    mystruct = {}    mystruct.mymap = default_map    if variable_exists {        if mystruct.mymap == default_map {          mystruct.mymap = make(map[string]string)        }        mystruct.mymap[variable] = blah    }}但这不起作用。我发现 deepequal 但这太慢了。大多数语言都允许检查它们是否指向同一个对象,那么我该怎么做呢?
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

用 初始化地图字段nil。将字段与nil向地图添加值之前进行比较:


for i := 0; i < 10000; i++ {

    var m mystruct

    if variable_exists {

        if m.mymap == nil {

            m.mymap = make(map[string]string)

        }

        m.mymap[variable] = blah

    }

}


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号