使用flag包可以用來解析命令列引數,flag.typevar()用於定義引數並繫結到指定變數,flag.type()用於定義引數並繫結到返回的指標,定義時可以指定引數名稱,預設值,使用說明。定義完引數後呼叫flag.parse()進行解析,flag.printdefaults()用於列印所有已定義引數的預設值和使用說明。
命令列引數的語法有如下三種形式,其中前面的減號可以是兩個,整數型別可以是十進位制,十六進製制,八進位制,負數,bool型別可以是1, 0, t, f, true, false, true, false, true, false。如果bool型別的引數在命令列中使用了-flag ***這種形式,其後的引數都會被當做non-flag引數。
-flag //只支援bool型別,例如-help
-flag=*** //支援任何型別,例如-help=true -port=4567 -host=127.0.0.1
-flag *** //只支援非bool型別,例如-port 4567 -host 127.0.0.1
另外,我們還可以建立自定義型別引數,只要實現flag.value介面即可。如果專案需要更高階的命令列解析方式可以使用第三方庫。
package main
import
("flag"
"fmt"
)var
( isshowhelp bool
port uint
)func
main()
fmt.
printf
("host:%s,port:%d"
,*host,port)
}
golang之flag包詳解
在golang中有很多方法來處理命令列引數,簡單情況下可以不使用任何庫,直接使用os.args 但是golang標準庫提供了flag包來處理命令列引數 還有第三方提供的處理命令列引數的庫cobra cli。flag包繫結解析引數有三種定義方式 flag.例如 flag.int,flag.string...
golang中的標準庫flag
go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。func main 執行命令 go run main.go host 127.0.0.1 port 8080 輸出結果 ...
Golang學習筆記
如果乙個method的receiver是 t,你可以在乙個t型別的例項變數v上面呼叫這個method,而不需要 v去呼叫這個method 即不需要 v method 如果乙個method的receiver是t,你可以在乙個 t型別的變數p上呼叫這個method,而不需要 p去呼叫這個method。i...