1.os.Args是做什么的

os.Args是做什么的

仅为个人阅读时遇到的困惑的理解
2021.6.16

书中代码

《GO语言圣经》-《GO程序设计语言》
P3

package main

import (
    "fmt"
    "os"
)

func main() {
    var s, sep string
    for i := 1; i < len(os.Args); i++ {
        s += sep + os.Args[i]
        sep = " "
    }
    fmt.Println(s)
}

在命令行中运行 go run main.go 123
会输出 123

修改代码

package main

import (
    "fmt"
    "os"
)

func main() {
    var s, sep string
    fmt.Println(os.Args[0])
    for i := 1; i < len(os.Args); i++ {
        s += sep + os.Args[i]
        sep = " "
        fmt.Println(s)
    }
    fmt.Println(s)
}

在命令行中分别输入(注意空格)
(1) go run main.go 123

(2) go run main.go 1 2 3
(1)中输出结果

C:\Users\Stream\AppData\Local\Temp\go-build477403600\b001\exe\main.exe
123
123

第一行是go命令的位置
第二行是for循环内的“一个参数”的结果
第三行是for循环外的最终结果
(2)中输出结果

C:\Users\Stream\AppData\Local\Temp\go-build2501894136\b001\exe\main.exe
1
1 2
1 2 3
1 2 3

第二行是for循环内“第一个参数”的结果
第三行是for循环内“第一个和第二个参数”的结果
以此类推。
(3)如果空格大于一个,仍会以一个空格输出


这时我才理解到书中所讲述的:

os.Args[0]时命令本身的名字;另外的元素是程序开始执行时的参数。

也就是以空格分隔代表新的一个参数。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容