Go-Flag包文档翻译

A_Donga · · 374 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang-flag包文档翻译

flag包实现了命令行参数解析。

代码中仅对注释进行翻译。

使用

使用flag.String()flag.Bool()flag.Int()等函数声明命令行参数。

如下示例声明了一个整型参数-flagname,并将信息存储在了指针ip中,类型为*int

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

如果你喜欢,你可以使用Var()这类函数将参数绑定到变量中。

var flagvar int
func init(){
    flag.IntVat(&flagvar, "flagname", 1234, "help message for flagname")
}

你也可以创建一个实现了Value接口(指针接收器)的参数,然后绑定在一起,示例如下

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

对于这类参数,数据的默认值将会是数据的初始化数据。

在所有参数声明后,调用flag.Parse()方法,根据已经声明的参数进行解析。

参数在被解析之后可能会被直接使用,如是使用参数本身,则参数的类型为指针类型,如果是进行了变量绑定,则参数是数据值。参数绑定后,尝试以下代码。

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

解析之后,标记后面的参数可以用作切片flag.Args()或单独用作flag.Arg(i)
参数的下标范围:0-flag.Narg()-1

命令行语法

flag可以解析以下格式的参数

  • -flag
  • -flag=x
  • flag x (不支持布尔类型)

可以使用一个或两个--x--x是等效的。最后一种格式不支持布尔类型,因为cmd -x *中的*Unix shell通配符的命令的含义,如果存在名为0,false等的文件,则该命令的含义将发生变化。必须使用-a=false形式来关闭a布尔标志。

标志解析在第一个非标志参数(-是非标志参数)之前或终止符--之后停止。

整型参数接受1234, 0664, 0x1234与负数。

布尔类型参数接受1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False

持续时间参数接受任何对time.ParseDuration有效的输入。

命令行参数的默认集合(FlagSet)由顶级函数控制。FlagSet类型允许人们定义独立的标志集,例如在命令行界面中实现子命令。FlagSet的方法类似于命令行标志集的顶级功能。


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

本文来自:简书

感谢作者:A_Donga

查看原文:Go-Flag包文档翻译

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

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