golang之flag包詳解

2021-10-10 20:25:15 字數 1554 閱讀 8344

在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的命令列引...