go的命令行参数---flag

(参考博客http://blog.csdn.net/u010003835/article/details/51896764)

1、os原始命令行参数访问功能:

  package main

  import "os"

  import "fmt"

  func main(){

    argsWithProg := os.Args

    argsWithoutProg := os.Args[1:]

    arg := os.Args[3]

    fmt.Println(argsWithProg)

    fmt.Println(argsWithoutProg)

    fmt.Println(arg)

  }

~go build command-line-arguments.go
~./command-line-arguments a b c d [./command-line-arguments a b c d] [a b c d] c

2、用flag包指定命令行参数
(基本的标记声明仅支持字符串String,整数Int和布尔值Bool选项。每种声明包含三个参数(命令标志,默认值,简要解释),返回指针。示例如下:
package main
import "flag"
import "fmt"
func main(){
  wordPtr := flag.String("word", "foo", "a string")
  numPtr := flag.Int("numb", 60, "a number")
  boolPtr := flag.Bool("bool", false, "a bool")
  //所有声明都完成后需要调用flag.Palse()来执行命令解析
  flag.Parse()
  fmt.Println("word: ", *wordPtr)
  fmt.Println("numb: ", *numPtr)
  fmt.Println("bool: ", *boolPtr)
  //flag.Args()得到所有命令行的位置参数,且所有有标志的参数必须出现在位置参数之前
  fmt.Println("tail: ",flag.Args())
}
------注意到,如果你省略一个标志,那么这个标志的值自动的设定为他的默认值
$$test -word=yixuan
word: yixuan
numb: 60
bool: false
tail: []
------位置参数可以出现在任何标志后面
$$test -word=yixuan arg1 arg2 arg3
word: yixuan
numb: 60
bool: false
tail: [arg1 arg2 arg3]
------注意,flag 包需要所有的标志出现位置参数之前(否则,这个标志将会被解析为位置参数)
$$test -word=yixuan arg1 arg2 arg3 -numb=28
word: yixuan
numb: 60
bool: false
tail: [arg1 arg2 arg3 -numb=28]






原文地址:https://www.cnblogs.com/liushi-Oscar/p/8298660.html