golang中的標準庫flag

2022-09-19 05:12:12 字數 1851 閱讀 4649

go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。

如果你只是簡單的想要獲取命令列引數,可以像下面的**示例一樣使用os.args來獲取命令列引數。

func main() 

}}

執行命令:go run .\main.go host:127.0.0.1 port:8080

輸出結果:

1 host:127.0.0.1

2 port:8080

os.args是乙個儲存命令列引數的字串切片,它的第乙個元素是執行檔案的名稱。

flag引數型別

flag包支援的命令列引數型別有bool、int、int64、uint、uint64、float float64、string、duration。

flag引數

有效值字串flag

合法字串

整數flag

1234、0664、0x1234等型別,也可以是負數。

浮點數flag

合法浮點數

bool型別flag

1, 0, t, f, t, f, true, false, true, false, true, false。

時間段flag

任何合法的時間段字串。如」300ms」、」-1.5h」、」2h45m」。 合法的單位有」ns」、」us」 /「µs」、」ms」、」s」、」m」、」h」。

flag.type()

基本格式如下:

flag.type(flag名, 預設值, 幫助資訊)*type例如我們要定義姓名、年齡、婚否三個命令列引數,我們可以按如下方式定義:

func main()
終端輸入:

go run .\main.go -name lisi --age 88 -married=true --d=15s

輸出:lisi 88 true 15s

flag.typevar()

基本格式如下: flag.typevar(type指標, flag名, 預設值, 幫助資訊) 例如我們要定義姓名、年齡、婚否三個命令列引數,我們可以按如下方式定義:

func main()
輸入:

go run .\main.go -name lisi --age 35 -m=true --duration=1h15m36s

輸出:lisi 35 true 1h15m36s

flag.parse()

通過以上兩種方法定義好命令列flag引數後,需要通過呼叫flag.parse()來對命令列引數進行解析。

支援的命令列引數格式有以下幾種:

-flag *** (使用空格,乙個-符號)

--flag *** (使用空格,兩個-符號)

-flag=*** (使用等號,乙個-符號)

--flag=*** (使用等號,兩個-符號)

其中,布林型別的引數必須使用等號的方式指定。

flag解析在第乙個非flag引數(單個」-「不是flag引數)之前停止,或者在終止符」–「之後停止。

func main()
輸入:

go run .\main.go -name lisi --age 35 -m=true --duration=1h15m36s abc true 123

輸出:

lisi 35 true 1h15m36s

[abc true 123]

34

快速理解golang標準庫flag包

flag包實現了命令列引數的解析 基本分為三步 package main import flag fmt os var 1.使用flag.string bool int 等函式註冊flag,解析後儲存到bool,int,string型別的指標 n flag.int n 1,print times s...

golang中的標準庫http

go語言內建的net http包十分的優秀,提供了http客戶端和服務端的實現。基本的http https請求 get head post和postform函式發出http https請求。url.values,id 程式在使用完response後必須關閉回覆的主體。使用net http包編寫乙個簡...

golang中的標準庫strconv

這一組函式是我們平時程式設計中用的最多的。atoi 函式用於將字串型別的整數轉換為int型別,函式簽名如下。func atoi s string i int,err error 如果傳入的字串引數無法轉換為int型別,就會返回錯誤。func main 結論 atoi 如果轉換成功結果就是正常的數值,...