是否保证for循环中的golang范围仅被评估一次?

时间:2019-07-16 23:13:33

标签: for-loop go evaluation

在我正在开发的软件中,我看到许多看起来像这样的循环:

for _, i := range strings.Split(s, ",") { ... }

我想确保范围只被评估一次,因为分割字符串总是很昂贵的。

golang文档中是否有关于此的规则?

1 个答案:

答案 0 :(得分:4)

https://golang.org/ref/spec

  

范围表达式x在开始循环之前被评估一次,但有一个例外:如果最多存在一个迭代变量并且len(x)是常量,则不评估范围表达式。