举例
现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在
如果使用下述的判断:
func main() {
fmt.Println(os.Args[1])
}
会报错:index out of range
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.main()
D:/go_work/test/test4.go:9 +0xbc
exit status 2
现有两种方式解决:
第一种:
通过遍历的方式判断 key 是否存在
func main() {
var result string
for k, v := range os.Args {
if k == 1 {
result = v
}
}
if result != "" {
fmt.Printf("os.Args[1] = %s", result)
}
}
第二种:
由于数组下标从0开始,len(arr)-1
为最后一个元素的下标,所以判断所要查询的 key 是否小于 len(arr)
就可以了
func main() {
if len(os.Args)>=2 {
fmt.Printf("os.Args[1] = %s", os.Args[1])
}
}