Golang Package-flag

 1、命令行語法

命令行語法主要有如下幾種形式:bash

cmd -flag     //只支持bool類型
cmd -flag=x
cmd -flag x   //只支持非bool類型

以上語法對於一個或兩個‘-’號是同樣的函數

對於整形flag,合法的值能夠爲1234,0664,0x1234或負數等。對於布爾型flag,能夠爲1,0,t,f,T,F,true,false,TRUE,FALSE,True,False等ui

2、命令行參數方法

(1)定義flag參數

    參數有三個:第一個爲參數名稱,第二個爲默認值,第三個是說明spa

    (1) 經過flag.String(),Bool(),Int() 等flag.Xxx()方法,該種方式返回一個相應的指針命令行

var ip = flag.Int("flagname", 1234, "help message for flagname")

    (2) 經過flag.XxxVar()方法將flag綁定到一個變量,該種方式返回值類型,如指針

var flagvar int
flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")

    (3) 經過flag.Var()綁定自定義類型,自定義類型須要實現Value接口(Receives必須爲指針),如code

flag.Var(&flagVal, "name", "help message for flagname")

 (2)調用flag.Parse()解析命令行參數到定義的flag

flag.Parse()

        解析函數將會在碰到第一個非flag命令行參數時中止,非flag命令行參數是指不知足命令行語法的參數,如命令行參數爲cmd --flag=true abc則第一個非flag命令行參數爲「abc」 接口

(3)調用Parse解析後,就能夠直接使用flag自己(指針類型)或者綁定的變量了(值類型)

fmt.Println("flagvar has value ", flagvar)

 還可經過flag.Args(), flag.Arg(i)來獲取非flag命令行參數ip

3、實例

package main

import (
  "flag"
  "fmt"
)
 
func main() {
  username := flag.String("name", "", "Input your username")
  flag.Parse()
  fmt.Println("Hello, ", *username)
}

編譯:cmd

go build flag.go

運行:

./flag -name=world

輸出:

Hello, world
相關文章
相關標籤/搜索