文章引用自
如果你只是簡單的想要獲取命令列引數,可以像下面的**示例一樣使用os.args
來獲取命令列引數。
package mainimport (
"fmt"
"os"
) demo
func main()
}}
將上面的**執行go build -o "args_demo"
編譯之後,執行:
$ ./args_demo a b c dargs[0]=./args_demo
args[1]=a
args[2]=b
args[3]=c
args[4]=d
os.args
是乙個儲存命令列引數的字串切片,它的第乙個元素是執行檔案的名稱。
本文介紹了flag包的常用函式和基本用法,更詳細的內容請檢視官方文件。
import 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
引數的方法。
基本格式如下:
flag.type(flag名, 預設值, 幫助資訊)*type
例如我們要定義姓名、年齡、婚否三個命令列引數,我們可以按如下方式定義:
name := flag.string("name", "張三", "姓名")age := flag.int("age", 18, "年齡")
married := flag.bool("married", false, "婚否")
delay := flag.duration("d", 0, "時間間隔")
需要注意的是,此時name
、age
、married
、delay
均為對應型別的指標。
基本格式如下:flag.typevar(type指標, flag名, 預設值, 幫助資訊)
例如我們要定義姓名、年齡、婚否三個命令列引數,我們可以按如下方式定義:
var name stringvar 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 -helpusage 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有可...