如何使这段代码更高效?

我有这段代码可以迭代地图并根据关系类型过滤一些字段,我必须运行两个循环并且感觉对于大地图来说它会很慢。有什么方法可以让我通过技术/重构来使这段代码的性能更高。


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

}


红颜莎娜
浏览 151回答 1
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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go