2.range的用法

range的用法

仅为个人阅读时遇到的困惑的理解,希望友善讨论
2021.6.25
《GO语言圣经》-《GO程序设计语言》
P5

代码一

package main

import (
    "fmt"
    "os"
)

func main() {
    var s, sep string
    for i, arg := range os.Args {      //注意这行
        fmt.Println(i)
        fmt.Println(arg)
        s += sep + arg
        sep = " "
    }
    fmt.Println(s)
}

在命令行中运行
go run main.go 一 二三 四
得到的结果

0
C:\Users\Stream\AppData\Local\Temp\go-build3043058665\b001\exe\main.exe
1
一
2
二三
3
四
C:\Users\Stream\AppData\Local\Temp\go-build3043058665\b001\exe\main.exe 一 二三 四

代码二

package main

import (
    "fmt"
    "os"
)

func main() {
    var s, sep string
    for i, arg := range os.Args[1:] {   //注意这行
        fmt.Println(i)
        fmt.Println(arg)
        s += sep + arg
        sep = " "
    }
    fmt.Println(s)
}

在命令行中运行
go run main.go 一 二三 四
得到的结果

0
一
1
二三
2
四
一 二三 四

结论

range获取一个范围,
有两个返回值,在本例中分别是iarg
第一个返回值i总是从0开始的,和range取范围的值(也就是本例中的os.Args)无关。(也就是本例中os.Args[1:]虽然是从os.Args的1值开始取的,但是在range中还是0)。
第二个返回值arg是切片的结果。


我理解的:rangeos.Args切成一个数组,先返回数组下标,再返回数组内容。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容