标签: for-loop go evaluation
在我正在开发的软件中,我看到许多看起来像这样的循环:
for _, i := range strings.Split(s, ",") { ... }
我想确保范围只被评估一次,因为分割字符串总是很昂贵的。
golang文档中是否有关于此的规则?
答案 0 :(得分:4)
https://golang.org/ref/spec
范围表达式x在开始循环之前被评估一次,但有一个例外:如果最多存在一个迭代变量并且len(x)是常量,则不评估范围表达式。