Go語言標準庫flag基本使用

2022-09-15 13:45:20 字數 2691 閱讀 3940

文章引用自

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

package main

import (

"fmt"

"os"

) 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

var delay 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

年齡 (default 18)

-d duration

時間間隔

-married

婚否-name string

姓名 (default "張三")

正常使用命令列flag引數:

$ ./flag_demo -name 沙河娜扎 --age 28 -married=false -d=1h30m

沙河娜扎 28 false 1h30m0s

04使用非flag命令列引數:

$ ./flag_demo a b c

張三 18 false 0s

[a b c]

30

Go語言標準庫之flag

go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。package main import fmt os os.args demo func main 將上面的 執行go ...

go語言 flag的使用

go語言flag的使用 package main import flag fmt var music file string flag.string file musicfile use file func main 例如檔案為flagtest.go go run flagtest.go file ...

Go語言flag包使用

flag包提供了一系列解析命令列引數的功能介面 命令列語法主要有以下幾種形式 flag 只支援bool型別 flag x flag x 只支援非bool型別以上語法對於乙個或兩個 號,效果是一樣的,但是要注意對於第三種情況,只支援非bool型別,原因是碰到如下情況時 cmd x 為0,false有可...