flag包能解析的引數有如下四種形式,使用的時候分三種型別:
型別一cmd -flag=x // 支援所有型別
cmd -flag x // 只支援非bool型別
型別二
cmd -flag // 只支援bool型別
型別三
cmd abc // 沒有flag的引數
cmd -flag=x有兩種形式,下方***代表型別cmd -flag x //只支援非bool型別
flag.***()
flag.string(), bool(), int() 這種形式返回乙個指向該引數的指標
例子
var date = flag.int("d", 20171107, "help message for date")
flag.parse()
注意 date 是指向 -d 引數值的指標
若在命令列輸入-d=20121212 -a=20
或者-d 20121212 -a 20
,則我們在程式中即可用 *date 取得 -d 的值20121212
若只輸入-a=20
或者-a 20
,因為預設標誌-d
,則 *date 取到的是 -d 定義中的預設值 20171107
flag.***var()
flag.stringvar(), boolvar(), intvar() 這種形式把引數繫結到乙個變數
例子
var age int
flag.intvar(&age, "a", 18, "help message for age")
flag.parse()
命令列輸入-d=20121212 -a=20
或者-d=20121212 -a 20
,在程式裡 變數age 則獲取到 -a 的值 20
若只輸入-d=20121212
或者-d=20121212
,預設標誌-a, 則 變數age 獲取定義中的預設值 18
注意到上面例子最後都帶有一行 flag.parse()
因為定義好引數後,只有呼叫方法 flag.parse() 解析命令列引數到定義的flag,這樣我們才能使用上面兩個例子的 *date 和 age 取得對應flag的引數值
cmd -flag //該形式只支援bool型別,對應的值是1, 0, t, f, true, false, true, false, true, false預設的,如果我們在命令列裡提供了-flag,則其對應的值為true,否則為flag.bool/boolvar中指定的預設值;如果希望顯示設定為false則使用-flag=false。
例子
var exist_f = flag.bool("f", false, "help message for format")
flag.parse()
當在命令列輸入-d=123 -f
時,程式裡 *exist_f 的值就為 true 了
若命令列只輸入-d=123
時,因為預設-f,*exist_f 的值為事先定義中預設的 false
cmd abc //沒有flag的引數通過 flag.args() 獲取非flag引數列表
通過 flag.arg(i) 來獲取非flag命令列第i個引數,i 從 0 開始
還可以通過flag.narg() 獲得非flag引數個數
例子當命令列敲入-d 20121212 -a 20 huang jiaming
,最後兩個值即為不帶標誌的引數
...
flag.parse()
var fullname = flag.args() // fullname = ['huang', 'jiaming']
var firstname = flag.arg(0) // firstname = huang
var lastname = flag.arg(1) // lastname = jiaming
var num = flag.narg() // num = 2
Go解析命令列引數 flag包
在寫命令列程式 工具 server 時,對命令列引數進行解析,是一種常見的需求。各種語言一般都會提供相應的方法或庫,以方便開發者使用。在go標準庫中提供了乙個包 flag,方便進行命令列解析。也就是說,go的flag包用來解析命令列引數。命令列flag的語法有如下三種形式 flag 只支援bool型...
go 命令列解析工具包flag
在學習用go寫乙個jvm的時候,看到乙個go解析命令列的工具包flag包,記錄一下 flag包有兩種方式 1 flag.其中 可以是int string等 返回乙個相應型別的指標,如 cpvalue flag.strin ar cp classpath 第乙個引數cp是名字 第二個引數是預設值 第三...
Golang 使用flag包進行命令列引數解析
最近在使用go開發cli command line inte ce 時,通過對於官方文件以及他人部落格的學習,在此寫下個人認為更適合自己往後回顧的關於flag的使用說明。package main import fmt flag func main 從main往下看 第一句代表我們需要乙個w的命令列引...