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

XDLGo · · 280 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
  兄弟连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中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

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