Golang 中 flag包開發命令列工具

2021-10-05 23:25:05 字數 1468 閱讀 4357

golang 提供了 flag 包來支援基本的命令列引數解析。命令列引數常用來為命令列程式指定選項。比如在wc -l命令中-l就是命令列引數。

命令列語法:

-flag    //只支援bool型別

-flag=x

-flag x //只支援非bool型別

定義 flag 引數:1) 通過flag.string(), bool(), int()flag.***()方法,該種方式返回乙個相應的指標:

brokers := flag.string("broker", "127.0.0.1:9092", "help message for broker")
2) 通過flag.***var()方法將flag繫結到乙個變數,該種方式返回值型別,如:

flag.strin**ar(&brokers, "broker", "127.0.0.1:9092", "help message for broker")
3) 通過flag.var()繫結自定義型別,自定義型別需要實現value介面(receives必須為指標),如

flag.var(&brokers, "broker", "help message for broker")
解析:呼叫flag.parse()解析命令列引數到定義的flag

flag.parse()
其他:通過flag.args(),flag.arg(i)來獲取非 flag 命令列引數

package main

import (

"flag"

"fmt"

"strconv"

)type percentage float32

func (p *percentage) set(s string) error

func (p *percentage) string() string

func main()

執行結果:

golang之flag包詳解

在golang中有很多方法來處理命令列引數,簡單情況下可以不使用任何庫,直接使用os.args 但是golang標準庫提供了flag包來處理命令列引數 還有第三方提供的處理命令列引數的庫cobra cli。flag包繫結解析引數有三種定義方式 flag.例如 flag.int,flag.string...

快速理解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

go語言內建的flag包實現了命令列引數的解析,flag包使得開發命令列工具更為簡單。如果你只是簡單的想要獲取命令列引數,可以像下面的 示例一樣使用os.args來獲取命令列引數。func main 執行命令 go run main.go host 127.0.0.1 port 8080 輸出結果 ...