Go flag包

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

 一、命令列文法

命令列文法主要有以下幾種形式:

cmd -flag     //只支援bool類型cmd -flag=xcmd -flag x   //只支援非bool類型

以上文法對於一個或兩個‘-’號是一樣的

對於整形flag,合法的值可以為1234,0664,0x1234或負數等。對於布爾型flag,可以為1,0,t,f,T,F,true,false,TRUE,FALSE,True,False等

二、命令列參數方法

(1)定義flag參數

    參數有三個:第一個為參數名稱,第二個為預設值,第三個是說明

    (1) 通過flag.String(),Bool(),Int() 等flag.Xxx()方法,該種方式返回一個相應的指標

var ip = flag.Int("flagname", 1234, "help message for flagname")

    (2) 通過flag.XxxVar()方法將flag綁定到一個變數,該種方式傳回值類型,如

var flagvar intflag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")

    (3) 通過flag.Var()綁定自訂類型,自訂類型需要實現Value介面(Receives必須為指標),如

flag.Var(&flagVal, "name", "help message for flagname")

 (2)調用flag.Parse()解析命令列參數到定義的flag

flag.Parse()

        解析函數將會在碰到第一個非flag命令列參數時停止,非flag命令列參數是指不滿足命令列文法的參數,如命令列參數為cmd --flag=true abc則第一個非flag命令列參數為“abc” 

(3)調用Parse解析後,就可以直接使用flag本身(指標類型)或者綁定的變數了(實值型別)

fmt.Println("flagvar has value ", flagvar)

 還可通過flag.Args(), flag.Arg(i)來擷取非flag命令列參數

三、執行個體

package mainimport (  "flag"  "fmt") func main() {  username := flag.String("name", "", "Input your username")  flag.Parse()  fmt.Println("Hello, ", *username)}

編譯:

go build flag.go

運行:

./flag -name=world

輸出:

Hello, world

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.