Golang學習筆記-flag

使用flag包可以用來解析命令行參數,flag.TypeVar()用於定義參數並綁定到指定變量,flag.Type()用於定義參數並綁定到返回的指針,定義時可以指定參數名稱,默認值,使用說明。定義完參數後調用flag.Parse()進行解析,flag.PrintDefaults()用於打印所有已定義參數的默認值和使用說明。

命令行參數的語法有如下三種形式,其中前面的減號可以是兩個,整數類型可以是十進制,十六進制,八進制,負數,bool類型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。如果bool類型的參數在命令行中使用了-flag xxx這種形式,其後的參數都會被當做non-flag參數。

-flag //只支持bool類型,例如-help
-flag=xxx //支持任何類型,例如-help=true -port=4567 -host=127.0.0.1
-flag xxx //只支持非bool類型,例如-port 4567 -host 127.0.0.1

另外,我們還可以創建自定義類型參數,只要實現flag.Value接口即可。如果項目需要更高級的命令行解析方式可以使用第三方庫。

package main

import (
	"flag"
	"fmt"
)

var(
	isShowHelp bool
	port uint
)


func main(){
	flag.BoolVar(&isShowHelp,"h",false,"help")
	flag.UintVar(&port,"port",8888,"the port for connection")
	host:=flag.String("host","127.0.0.1","the host")
	flag.Parse()
	if (isShowHelp){
		flag.PrintDefaults()
	}
	fmt.Printf("host:%s,port:%d",*host,port)
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章