兄弟连Go语言培训带你实战GO案例(45)Go 命令行参数

XDLGo · 2018-08-01 14:33:31 · 728 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2018-08-01 14:33:31 的主题,其中的信息可能已经有所发展或是发生改变。

  兄弟连Go语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。

  Go命令行参数标记

  命令行参数标记是为命令行程序指定选项参数的常用方法。例如,在命令wc-l中,-l就是一个命令行参

  数标记。

  Go提供了flag包来支持基本的命令行标记解析。我们这里将要使用这个包提供的方法来实现带选项的命

  令行程序。

  packagemain

  import"flag"

  import"fmt"

  funcmain(){

  //基础的标记声明适用于string,integer和bool型选项。

  //这里我们定义了一个标记word,默认值为foo和一

  //个简短的描述。flag.String函数返回一个字符串指

  //针(而不是一个字符串值),我们下面将演示如何使

  //用这个指针

  wordPtr:=flag.String("word","foo","astring")

  //这里定义了两个标记,一个numb,另一个是fork

  //使用和上面定义word标记相似的方法

  numbPtr:=flag.Int("numb",42,"anint")

  boolPtr:=flag.Bool("fork",false,"abool")

  //你也可以程序中任意地方定义的变量来定义选项,只

  //需要把该变量的地址传递给flag声明函数即可

  varsvarstring

  flag.StringVar(&svar,"svar","bar","astringvar")

  //当所有的flag声明完成后,使用flag.Parse()来分

  //解命令行选项

  flag.Parse()

  //这里我们仅仅输出解析后的选项和任何紧跟着的位置

  //参数,注意我们需要使用*wordPtr的方式来获取最

  //后的选项值

  fmt.Println("word:",*wordPtr)

  fmt.Println("numb:",*numbPtr)

  fmt.Println("fork:",*boolPtr)

  fmt.Println("svar:",svar)

  fmt.Println("tail:",flag.Args())

  }

  为了运行示例,你需要先将程序编译为可执行文件。

  gobuildcommand-line-flags.go

  下面分别看看给予该命令行程序不同选项参数的例子:

  (1)给所有的选项设置一个参数

  $./command-line-flags-word=opt-numb=7-fork-svar=flag

  word:opt

  numb:7

  fork:true

  svar:flag

  tail:[]

  (2)如果你不设置flag,那么它们自动采用默认的值

  $./command-line-flags-word=opt

  word:opt

  numb:42

  fork:false

  svar:bar

  tail:[]

  (3)尾部的位置参数可以出现在任意一个flag后面

  $./command-line-flags-word=opta1a2a3

  word:opt

  numb:42

  fork:false

  svar:bar

  tail:[a1a2a3]

  (4)注意flag包要求所有的flag都必须出现在尾部位置参数的前面,否则这些flag将被当作位置参数处理

  $./command-line-flags-word=opta1a2a3-numb=7

  word:opt

  numb:42

  fork:false

  svar:bar

  trailing:[a1a2a3-numb=7]

  (5)使用-h或者--help这两个flag来自动地生成命令行程序的帮助信息

  $./command-line-flags-h

  Usageof./command-line-flags:

  -fork=false:abool

  -numb=42:anint

  -svar="bar":astringvar

  -word="foo":astring

  (6)如果你提供了一个程序不支持的flag,那么程序会打印一个错误信息和帮助信息

  $./command-line-flags-wat

  flagprovidedbutnotdefined:-wat

  Usageof./go_cmd_flag:

  -fork=false:abool

  -numb=42:anint

  -svar="bar":astringvar

  -word="foo":astring


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

728 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传