golang從誕生到現在不到十年,使用者量確一路高漲,這個跟golang系統包提供很多開發者經常要用到的功能多少有些關係。乙個更新的語言,在設計的時候會更多的結合眾多開發者常見的需求,將常用的東西放到基礎包,可以避免大量造輪子。golang基礎包中flag包就是用來解決常見的命令列解析問題。下面來介紹下其基本用法:
1、命令列解析出來後對應的是**中的變數,在flag包中獲取的變數支援的型別有:
1)bool
2)time.duration
3 ) float64
4 ) int
5 ) int64
6 ) string
7 ) uint
8 ) uint64
2、將命令列輸入值賦值到對應變數的方法:
1)bool型別對應:
bool(name string, value
bool, usage string) *bool
boolvar(p *bool, name string, value
bool, usage string)
2)time.duration型別對應:
duration(name string, value
time.duration, usage string) *time.duration
durationvar(p *time.duration, name string, value
time.duration, usage string)
3)float64型別對應:
float64(name string, value float64, usage string) *float64
float64var(p *float64, name string, value float64, usage string)
4)int型別對應:
int(name string, value
int, usage string) *int
intvar(p *int, name string, value
int, usage string)
5)int64型別對應:
int64(name string, value
int64, usage string) *int64
int64var(p *int64, name string, value
int64, usage string)
6)string型別對應:
string(name string, value
string, usage string) *string
stringvar(p *string, name string, value
string, usage string)
7)uint型別對應:
uint(name string, value
uint, usage string) *uint
uintvar(p *uint, name string, value
uint, usage string)
8)uint64型別對應:
uint64(name string, value uint64, usage string) *uint64
uint64var(p *uint64, name string, value uint64, usage string)
3、預設值和用法說明:
獲取命令列引數介面中value引數為預設值,usage引數為命令列使用說明。用programname + -h可以看到usage對應的字串。
下面以乙個例子來看看flag的使用方法:
package main
import
( "flag"
"fmt"
)func
init
() var
lang = flag.string
("lang", "golang", "the lang of the program")
varage = flag.int64
("age", 18, "the age of the user")
varsafemod = flag.bool
("safemod", true, "whether using safemode")
flag.bool
()func
main
()
直接執行結果如下:
lang is: golang
age is: 18
safemod is: true
-h 顯示如下:
usage of test.exe:
-age int
the age of
the user (default 18)
-lang string
the lang of
the program (default "golang")
-safemod
whether using safemode (default true)
從例子可以看出,繫結好變數後,直接呼叫flag.parse()方法,就可以解析出命令列引數了。這個比c++中的getopt來的簡單直觀很多。 命令列解析
不想自已分析命令列的話也可以 lpwstr lpwargv lpwargv commandlinetoargvw getcommandlinew dwcount dwcount的值即為命令列引數的個數 像控制台程式一樣,引數也包括本執行檔案的全路徑 lpwargv為乙個lpwstr 的指標,需要按如...
Golang 命令列字型顏色
package main import flag syscall func main cc flag.int i 2,type int flag.parse count int 11 objdll syscall.newlazydll kernel32.dll colorhandle objdll....
golang獲取命令列引數
package main import fmt os func main os可以通過變數args來獲取命令引數,os.args返回乙個字串陣列。其中第乙個引數就是執行檔案的名字。package main import flag fmt func main 執行go run test.go,會得到 ...