go語言內建的flag
包實現了命令列引數的解析,flag
包使得開發命令列工具更為簡單。
如果你只是簡單的想要獲取命令列引數,可以像下面的**示例一樣使用os.args
來獲取命令列引數。
package mainimport (
"fmt""
os")//
os.args 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
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 -helpusage 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...