命令行語法主要有如下幾種形式:bash
cmd -flag //只支持bool類型 cmd -flag=x cmd -flag x //只支持非bool類型
以上語法對於一個或兩個‘-’號是同樣的函數
對於整形flag,合法的值能夠爲1234,0664,0x1234或負數等。對於布爾型flag,能夠爲1,0,t,f,T,F,true,false,TRUE,FALSE,True,False等ui
參數有三個:第一個爲參數名稱,第二個爲默認值,第三個是說明spa
(1) 經過flag.String(),Bool(),Int() 等flag.Xxx()方法,該種方式返回一個相應的指針命令行
var ip = flag.Int("flagname", 1234, "help message for flagname")
(2) 經過flag.XxxVar()方法將flag綁定到一個變量,該種方式返回值類型,如指針
var flagvar int flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
(3) 經過flag.Var()綁定自定義類型,自定義類型須要實現Value接口(Receives必須爲指針),如code
flag.Var(&flagVal, "name", "help message for flagname")
flag.Parse()
解析函數將會在碰到第一個非flag命令行參數時中止,非flag命令行參數是指不知足命令行語法的參數,如命令行參數爲cmd --flag=true abc則第一個非flag命令行參數爲「abc」 接口
fmt.Println("flagvar has value ", flagvar)
還可經過flag.Args(), flag.Arg(i)來獲取非flag命令行參數ip
package main import ( "flag" "fmt" ) func main() { username := flag.String("name", "", "Input your username") flag.Parse() fmt.Println("Hello, ", *username) }
編譯:cmd
go build flag.go
運行:
./flag -name=world
輸出:
Hello, world