我有一个go程序列表。我想循环遍历它们,并对这些事物的子集执行某些操作。这样做的优雅/惯用代码是否比以下更好?
for key, value := range listOfThings {
if(!value.Enabled) {
continue;
}
doTheThing(key, value)
}
大型语境 - 我来自语言,其中map / reduce / filter / etc是这种类型的流行模式,但word on the internet是那些更高级别的抽象不是&#39这真是一件好事。
对于这种代码,我的范围块中是否有比guard / continue
子句更优雅的东西?
答案 0 :(得分:12)
Simple apply/filter/reduce package.
我想知道在Go中实现这种事情是多么困难, 与我能管理的API一样好。这并不难。
几年前写完之后,我还没有机会使用它 它一次。相反,我只是使用"用于"环路。
你也不应该使用它。
Rob Pike
按照Rob的建议。用于循环。
答案 1 :(得分:3)
答案 2 :(得分:1)
我不同意peterSO的报价。如果要使用golang来实现诸如presto / Athena / hive / impala / sparkSQL之类的查询引擎,则需要创建抽象的map / reduce / filter层。否则,从select / where这种SQL查询中进行术语重写就不是那么简单。
当然,有一个更深层的原因导致我们看不到Golang中实现查询引擎:)