在golang中有很多方法來處理命令列引數,簡單情況下可以不使用任何庫,直接使用os.args;但是golang標準庫提供了flag包來處理命令列引數;還有第三方提供的處理命令列引數的庫cobra、cli。
flag包繫結解析引數有三種定義方式
flag.***() 例如:flag.int, flag.string, 返回解析變數型別的指標
package main
import
("flag"
"fmt"
)func
main()
執行:go run main.go -host=127.0.0.1 -port=3306
輸出:127.0.0.1:3306
當然你也可以直接執行go run main.go, 這時候就會使用你的預設值
flag.***var() 例如:flag.intvar, flag.strin**ar
package main
import
("flag"
"fmt"
)var host string
var port int
func
init()
func
main()
執行結果同上
3.自定義引數解析flag.var(), 我們可以看下flag.go原始碼:
func
var(value value, name string
, usage string
)type value inte***ce
使用flag.var函式第乙個引數我們需要傳入乙個value型別的值,value是乙個介面型別,定義了兩個方法,接下來我們去實現這兩個方法:
package main
import
("flag"
"fmt"
"strings"
)// 自定義型別
type handsomeboys [
]string
// 實現string()方法
func
(h *handsomeboys)
string()
string
// 實現set方法,set介面決定了如何解析flag的值
func
(h *handsomeboys)
set(s string
)error
return
nil}
// 定義乙個handsomeboys型別的變數
var boys handsomeboys
func
init()
func
main()
執行**:go run main.go -boys=彭于晏,吳彥祖
[彭于晏,吳彥祖]
快速理解golang標準庫flag包
flag包實現了命令列引數的解析 基本分為三步 package main import flag fmt os var 1.使用flag.string bool int 等函式註冊flag,解析後儲存到bool,int,string型別的指標 n flag.int n 1,print times s...
Golang學習筆記 flag
使用flag包可以用來解析命令列引數,flag.typevar 用於定義引數並繫結到指定變數,flag.type 用於定義引數並繫結到返回的指標,定義時可以指定引數名稱,預設值,使用說明。定義完引數後呼叫flag.parse 進行解析,flag.printdefaults 用於列印所有已定義引數的預...
Golang 使用flag包進行命令列引數解析
最近在使用go開發cli command line inte ce 時,通過對於官方文件以及他人部落格的學習,在此寫下個人認為更適合自己往後回顧的關於flag的使用說明。package main import fmt flag func main 從main往下看 第一句代表我們需要乙個w的命令列引...