(参考博客http://blog.csdn.net/u010003835/article/details/51896764)
1、os原始命令行参数访问功能:
package main
import "os"
import "fmt"
func main(){
argsWithProg := os.Args
argsWithoutProg := os.Args[1:]
arg := os.Args[3]
fmt.Println(argsWithProg)
fmt.Println(argsWithoutProg)
fmt.Println(arg)
}
~go build command-line-arguments.go
~./command-line-arguments a b c d [./command-line-arguments a b c d] [a b c d] c
2、用flag包指定命令行参数
(基本的标记声明仅支持字符串String,整数Int和布尔值Bool选项。每种声明包含三个参数(命令标志,默认值,简要解释),返回指针。示例如下:
package main
import "flag"
import "fmt"
func main(){
wordPtr := flag.String("word", "foo", "a string")
numPtr := flag.Int("numb", 60, "a number")
boolPtr := flag.Bool("bool", false, "a bool")
//所有声明都完成后需要调用flag.Palse()来执行命令解析
flag.Parse()
fmt.Println("word: ", *wordPtr)
fmt.Println("numb: ", *numPtr)
fmt.Println("bool: ", *boolPtr)
//flag.Args()得到所有命令行的位置参数,且所有有标志的参数必须出现在位置参数之前
fmt.Println("tail: ",flag.Args())
}
------注意到,如果你省略一个标志,那么这个标志的值自动的设定为他的默认值
$$test -word=yixuan
word: yixuan
numb: 60
bool: false
tail: []
------位置参数可以出现在任何标志后面
$$test -word=yixuan arg1 arg2 arg3
word: yixuan
numb: 60
bool: false
tail: [arg1 arg2 arg3]
------注意,flag 包需要所有的标志出现位置参数之前(否则,这个标志将会被解析为位置参数)
$$test -word=yixuan arg1 arg2 arg3 -numb=28
word: yixuan
numb: 60
bool: false
tail: [arg1 arg2 arg3 -numb=28]