1. 程式人生 > >golang flag標準庫命令列引數解析

golang flag標準庫命令列引數解析

今天看以太坊專案的時候發現有一個go語言的一個標準庫不是很明白,flag標準庫.flag標準庫一般常用於命令列程式的解析的,不多說,直接s上一個簡單的程式碼例子:

//flag.go
package main
import "flag"
var(
    h   bool
    v   string
)
func init(){
    flag.BoolVar(&h, "h", false, "this is help") //①
    flag.StringVar(&v, "", "", "Print to `version`") //②
}
func main(){
    flag.Parse()  //③
if h{ //④ flag.PrintDefaults() //⑤ } }

然後在命令列執行
這裡寫圖片描述

接下來對程式碼解讀一下.
①此處將this is help 繫結到h這個命令列變數上,也就是在命令列看到的第一行的 -h this is help

②將Print to versin 繫結到v這個命令列變數上,也就是-v version Print to version 這一行.注意這裡有幾個細節需要注意一下:
在②的標記中的Print to version這裡面version被” “ “這個符號包圍起來了.如果這裡沒有這個符號,在命令列-v後面顯示的將是string,也就是改命令列變數的型別.

④if h就是在命令列中是都有-h的輸入,如果有,進入⑤

⑤預設的列印方式,也就是-h,-v等這樣的列印方式,你也可以改寫此方法,將-h改寫成$h,~h,只要你願意都行
這就是我今天的小小總結,歡迎指正