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]时命令本身的名字;另外的元素是程序开始执行时的参数。
也就是以空格分隔代表新的一个参数。