Go語言標準庫之flag

2021-09-23 05:02:43 字數 3075 閱讀 2981

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

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

package main

import (

"fmt""

os")//

os.args demo

func main()

}}

將上面的**執行go build -o "args_demo"編譯之後,執行:

$ ./args_demo a b c d

args[

0]=./args_demo

args[

1]=a

args[

2]=b

args[

3]=c

args[

4]=d

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

本文介紹了flag包的常用函式和基本用法,更詳細的內容請檢視官方文件。

import flag

flag包支援的命令列引數型別有boolintint64uintuint64floatfloat64stringduration

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引數的方法。

基本格式如下:

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

name := flag.string("

name

", "

張三", "姓名"

)age := flag.int("

age", 18, "年齡"

)married := flag.bool("

married

", false, "婚否"

)delay := flag.duration("

d", 0, "

時間間隔

")

需要注意的是,此時nameagemarrieddelay均為對應型別的指標。

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

var name string

var age int

var married bool

vardelay time.duration

flag.strin**ar(&name, "

name

", "

張三", "姓名"

)flag.intvar(&age, "

age", 18, "年齡"

)flag.boolvar(&married, "

married

", false, "婚否"

)flag.durationvar(&delay, "

d", 0, "

時間間隔

")

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

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

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

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

flag.args()  ///

/返回命令列引數後的其他引數,以string型別

flag.narg() //

返回命令列引數後的其他引數個數

flag.nflag() //

返回使用的命令列引數個數

func main()

$ ./flag_demo -help

usage of ./flag_demo:

-age int

年齡 (

default18)

-d duration

時間間隔

-married

婚否-name string

姓名 (

default"張三

")

正常使用命令列flag引數:

$ ./flag_demo -name 小明 --age 18 -married=false -d=1h30m

小明 18 false 1h30m0s

04

使用非flag命令列引數:

$ ./flag_demo a b c

張三 18 false 0s

[a b c]

30

posted @

2019-05-19 11:48

aaronthon 閱讀(

...)

編輯收藏

Go語言標準庫flag基本使用

文章引用自 如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。package main import fmt os demo func main 將上面的 執行go build o args demo 編譯之後,執行 args demo a b c d a...

Go語言庫系列之flag

終端 命令列 操作是程式設計師的必備技能,但是你知道怎麼通過golang製作出如下命令嗎?flag girl h usage of girl height int 身高 default 140 flag girl height 170 恭喜你獲得了身高 170 的女朋友整個實現非常簡單,只需要5個步...

Go語言標準庫之strconv

go語言中strconv包實現了基本資料型別和其字串表示的相互轉換。更多函式請檢視官方文件。這一組函式是我們平時程式設計中用的最多的。將字串型別的整數轉換為int型別。func atoi s string i int,err error 如果傳入的字串引數無法轉換為int型別,就會返回錯誤。s1 1...