go中for循环结构与范围关键字之间的区别

考虑以下仅打印所有 ENV 变量的代码


package main


import (

    "fmt"

    "os"

)


func main() {

    for i, env := range os.Environ() {

        fmt.Println(i, env)

    }

}

在这里, os.Environ() 应该返回字符串数组([] string ),循环遍历它。我需要使用 range 关键字和 for 循环。问题是:

  1. 为什么 for & range 都需要?是否可以为此使用 for 循环,因为[]string它已经是一个数组,我们可以对数组进行迭代,对吗?

  2. 在上面的代码中range做了什么?for循环有什么作用?

对不起,如果这个问题太愚蠢,我只是从 Go 开始


人到中年有点甜
浏览 163回答 1
1回答

拉莫斯之舞

如范围条款中所述:range 子句提供了一种迭代数组、切片、字符串、映射或通道的方法。如果你想迭代一个[]string,你需要range.一个For语句并不总是使用范围。ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .你有:以最简单的形式,for只要布尔条件评估为真,“ ” 语句指定块的重复执行带有 a 的“for”语句ForClause也受其条件控制,但另外它还可以指定 init 和 post 语句,例如赋值、增量或减量语句带有“range”子句的“for”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收到的值。对于每个条目,它会将迭代值分配给相应的迭代变量(如果存在),然后执行该块。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go