golang命令列解析

2021-08-08 18:09:49 字數 2834 閱讀 1079

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,會得到 ...