Golang 處理命令列啟動參數

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

最近要做Apache Thrift相關的項目。大概看了一下,覺得不難。Thrift目前已經至此和Go語言了。照著官方提供的一個例子在學。周五搞了一上午,終於編譯通過了。下午去讀例子源碼,發現一個從來沒見過的包——flag。

不管是C開發還是Java,都接觸過命令列開發。像大Java的main函數public static void main(String []args)直接參數裡面就能讀取到命令列啟動參數。而Go語言的主函數是func main()果斷啥也沒,需要用這個包。

雖然Go不像大Java,在主函數裡面直接就能擷取到命令列參數,但是Go通過flag包擷取到的參數類型,不像Java那樣,只能是String類型。

再擷取之前,需要自訂要擷取的參數名稱、參數預設值、參數使用方法,還有參數類型。返回的是指標類型。也可以使用函數StringVar,用處一樣,只是參數表和傳回值的變化。

func String(name string, value string, usage string) *stringfunc StringVar(p *string, name string, value string, usage string)

定義好之後,通過調用flag包的Parse函數,就會自動解析。完整例子如下testflag.go:

package mainimport (    "flag")var strFlag = flag.String("s", "", "Description")var boolFlag = flag.Bool("bool", false, "Description of flag")func main() {    flag.Parse()    println(*strFlag, *boolFlag)}

還有一點需要注意的是,Go的命令列參數和大Java對應方式是不同的,預設情況下不能唯寫值,還需要傳入對於值的名稱,也就是前面提到的String函數的第一個參數。如果定義的是name,那麼傳的時候就需要加上-name {NAME}

運行命令及結果:

$ go run testflag.go -s 123123 false

現在在GitHub上面建立了一個Go語言相關用例的庫,裡面都是平時的測試代碼。從今天開始添加。

https://github.com/mnhkahn/go_code

######參考文獻+ 【1】Package flag - http://golang.org/

原文連結:Golang 處理命令列啟動參數,轉載請註明來源!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.