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

如何使这段代码更高效?

如何使这段代码更高效?

Go
红颜莎娜 2021-10-18 10:12:22
我有这段代码可以迭代地图并根据关系类型过滤一些字段,我必须运行两个循环并且感觉对于大地图来说它会很慢。有什么方法可以让我通过技术/重构来使这段代码的性能更高。func getFields(filter map[string]map[string]bool, msg *Message) (fs []Field) {    for k, _ := range filter {        if relationString(msg) == k {            if fieldFilter, ok := filter[k]; ok {                for _, f := range msg.Fields {                    if _, ok := fieldFilter[f.Name]; ok {                        fs = append(fs, f)                    }                }            }        }    }    return}
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您不需要外循环作为一项改进:


func getFields(filter map[string]map[string]bool, msg *Message) (fs []Field) {

  if fieldFilter, ok := filter[relationString(msg)]; ok {

    for _, f := range msg.Fields {

        if _, ok := fieldFilter[f.Name]; ok {

            fs = append(fs, f)

        }

      }

    }

  }


  return

}


查看完整回答
反对 回复 2021-10-18
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信