考虑以下代码,它只打印所有ENV vars
package main
import (
"fmt"
"os"
)
func main() {
for i, env := range os.Environ() {
fmt.Println(i, env)
}
}
这里,os.Environ()应返回array of strings([] string),以循环它。我需要使用范围关键字&也用于循环。问题是:
[]string
已经是一个数组&我们可以迭代数组吗?range
做了什么? for
循环有什么作用?很抱歉,如果这个问题太愚蠢,我刚开始使用Go
答案 0 :(得分:5)
如Range Clauses中所述:
range子句提供了一种迭代数组,切片,字符串,映射或通道的方法。
如果您要迭代[]string
,则需要range
。
For statement并不总是使用范围。
ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
你有:
- ,语句就会指定重复执行一个块
最简单的形式是"
for
"只要布尔条件的计算结果为真A" for"带有
ForClause
的语句也受其条件控制,但另外它可以指定init和post语句,例如赋值,递增或递减语句A" for"声明带有"范围"子句遍历数组,切片,字符串或映射的所有条目,或者在通道上接收的值。对于每个条目,它将迭代值分配给相应的迭代变量(如果存在),然后执行该块。