flag庫
Go語言標(biāo)準(zhǔn)庫提供了用于快迅解析命令行參數(shù)的flag包,大致的使用步驟如下:
a.通過flag.String(), flag.Bool(), flag.Int()等方式來定義命令行中需要使用的參數(shù)创坞。
b.在定義完flag后扇住,通過調(diào)用flag.Parse()來進(jìn)行對命令行參數(shù)的解析。
c.獲取flag.String(), flag.Bool(), flag.Int()等方法的返回值,即對應(yīng)用戶輸入的參數(shù).
需要注意的是flag.Xxx()返回的值是變量的內(nèi)存地址,要獲取值時(shí)要通過在變量前加*(星號(hào))獲取.
說明:
像flag.Int威根、flag.Bool缅茉、flag.String這樣的函數(shù)格式都是一樣的嘴脾,調(diào)用的時(shí)候需要傳入3個(gè)參數(shù)
參數(shù)的說明如下:
第一個(gè)arg表示參數(shù)名稱,在控制臺(tái)的時(shí)候,提供給用戶使用.
第二個(gè)arg表示默認(rèn)值蔬墩,如果用戶在控制臺(tái)沒有給該參數(shù)賦值的話,就會(huì)使用該默認(rèn)值.
第三個(gè)arg表示使用說明和描述,在控制臺(tái)中輸入-arg的時(shí)候會(huì)顯示該說明,類似-help
栗子:
package main
import (
"flag"
"fmt"
)
func main() {
married := flag.Bool("married", false, "Are you married?")
age := flag.Int("age", 22, "How old are you?")
name := flag.String("name", "Jeson", "What your name?")
var address string
//flag.StringVar這樣的函數(shù)第一個(gè)參數(shù)換成了變量地址译打,后面的參數(shù)和flag.String是一樣的。
flag.StringVar(&address, "address", "Jeson", "Where is your address?")
flag.Parse() //解析輸入的參數(shù)
fmt.Println("輸出的參數(shù)married的值是:", *married)//不加*號(hào)的話,輸出的是內(nèi)存地址
fmt.Println("輸出的參數(shù)age的值是:", *age)
fmt.Println("輸出的參數(shù)name的值是:", *name)
fmt.Println("輸出的參數(shù)address的值是:", address)
}
os庫
栗子:
package main
import (
"os"
"fmt"
)
func main() {
args := os.Args //獲取用戶輸入的所有參數(shù)
if args == nil || len(args) <2{
Usage()//如果用戶沒有輸入,或參數(shù)個(gè)數(shù)不夠,則調(diào)用該函數(shù)提示用戶
//return
}
name := args[1] //獲取輸入的第一個(gè)參數(shù)
age := args[2] //獲取輸入的第二個(gè)參數(shù)
fmt.Println("your name is:",name,"\nyour age is:",age)
}
var Usage = func() {
fmt.Println("you name?");
fmt.Println("you age?");
}
/*
D:\go\workspace\src\redis>go run main/main.go yang 15
your name is: yang
your age is: 15
D:\go\workspace\src\redis>*/