flag - skynocover/Wiki-for-GoLang GitHub Wiki

flag

package main

import (
  "fmt"
  "flag"
)

var (
  intflag int
  boolflag bool
  stringflag string

  var operator *string
)

func init() {
  flag.IntVar(&intflag, "intflag", 0, "int flag value") //輸入的參數,flag名,預設值,提示值
  flag.BoolVar(&boolflag, "boolflag", false, "bool flag value")
  flag.StringVar(&stringflag, "stringflag", "default", "string flag value")
  flag.StringVar(&stringflag, "s", "default", "string flag value") //用設置相同的flag名來設定短command

operator = flag.String("o", "+", "the math `operator`")
fmt.Printfln(operator)    // 0xc00001a0b8
fmt.Printfln(*operator)   // +
}

func main() {
  flag.Parse() //使用parse來初始化已經定義的flag

  fmt.Println("int flag:", intflag)
  fmt.Println("bool flag:", boolflag)
  fmt.Println("string flag:", stringflag)
}

/*
int flag: 12
bool flag: true
string flag: test
*/

基本用法

./main.exe -intflag 12 -boolflag 1

int flag: 12
bool flag: true
string flag: default
  • 指定方式
-name //只支援bool
-name=Jack
-name Jack //不支援bool
--name=Jack
--name Jack //不支援bool

function

  • PrintDefaults

用來展示設定的flag

fmt.Fprintf(os.Stderr, "Usage: math [options] [root]\n")
    fmt.Fprintf(os.Stderr, "  Currently, there are four URI routes could be used:\n")
    flag.PrintDefaults()
  • Arg(s)

用來展示未指定的輸出

math -o "*" -p=true 3 4

flag.Arg(0) // get 3
flag.Arg(1) // get 4

math -o "*" -p=true 3 4
len(flag.Args()) // get 2
flag.Args()[0]   // get 3

補充

go run main.go -intflag 12 -boolflag 1

使用go run 並輸入參數

./main.exe -h

使用-h來取得說明

./main.exe noflag -intflag 12

遇到沒有設定的noflag就會停止,因此-intflag不會執行