我有这段代码可以迭代地图并根据关系类型过滤一些字段,我必须运行两个循环并且感觉对于大地图来说它会很慢。有什么方法可以让我通过技术/重构来使这段代码的性能更高。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
}
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报
0/150
提交
取消