首页 > 其他分享 >Go中flag用法

Go中flag用法

时间:2023-08-14 10:13:17浏览次数:36  
标签:标志 flagvar 用法 flag 命令行 使用 Go 解析

flag 包实现了命令行标志解析。

使用 flag.String(), Bool(), Int() 等定义标志。
这声明了一个整数标志 -n,存储在指针 nFlag 中,类型为 *int

import "flag"
var nFlag = flag.Int("n", 1234, "help message for flag n")

如果您愿意,您可以使用 Var() 函数将标志绑定到一个变量。

var flagvar int
func init() {
    flag.IntVar(&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 // 仅非布尔标志

可以使用一个或两个破折号;它们是等效的。布尔标志不允许使用最后一种形式,因为如果有一个名为 0、false 等的文件,命令 cmd -x *(其中 * 是一个Unix shell通配符)的含义会改变。您必须使用 -flag=false 形式来关闭一个布尔标志。

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

整数标志接受 123406640x1234,并且可以是负的。布尔标志可以是:

1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False

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

默认的命令行标志集由顶级函数控制。FlagSet 类型允许定义独立的标志集,例如在命令行接口中实现子命令。FlagSet 的方法与命令行标志集的顶级函数类似。

示例

输出:[此处省略了示例输出]

标签:标志,flagvar,用法,flag,命令行,使用,Go,解析
From: https://www.cnblogs.com/tangjicheng/p/17627879.html

相关文章

  • Go语言中的flag
    Go语言的flag包提供了一个简单的方式来定义和解析命令行参数。以下是如何使用flag包的基本步骤和示例:1.定义参数使用flag包的相关函数来定义命令行参数。例如,你可以使用StringVar、IntVar和BoolVar来定义字符串、整数和布尔值参数。2.调用flag.Parse()这将解析......
  • 学习go语言编程之错误处理
    error接口Golang中有一个关于错误处理的标准模式,即:error接口。typeerrorinterface{ Error()string}对于大多数函数,如果要返回错误,大致上都可以定义为如下模式:funcFoo(paramint)(nint,errerror){ //...}将error作为多种返回值中的一个,但是这并非强制要求。......
  • 学习go语言编程之面向对象
    类型系统类型系统是指一个语言的类型体系结构,一个典型的类型系统通常包含如下基本内容:基础类型,如:byte、int、bool、float等复合类型,如:数组、结构体、指针等可以指向任意对象的类型(Any类型)值语义和引用语义面向对象,即:所有具备面向对象特征(比如成员方法)的类型接口为类型添......
  • go语言环境要这样搭建才"省钱"
    go语言环境要这样搭建才省钱目录go语言环境要这样搭建才省钱本篇概要集成开发环境工具(ide)Goland或IntelliJIDEAVisualStudioCode其他集成开发环境VisualStudioCode的go语言开发环境搭建VisualStudioCode安装go编译环境安装配置go环境变量安装go语言插件使用golang编程本篇......
  • Java中Integer数据类型详细用法
    Java中的Integer类在对象中包装了一个基本类型int的值。以下是关于Integer类的详细用法和相关代码:1.构造方法:Integer(intvalue):构造一个新分配的Integer对象,它表示指定的int值。Integer(Strings):构造一个新分配的Integer对象,它表示String参数所指示的int值。javaCopycodeI......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录8
    Django实现文件上传、文件列表查看、修改、限流和日志记录8本章节,总结一些部署项目遇到的报错,希望会有所帮助NameError:name'datetime'isnotdefined报错“logging.info('用户{}在{}登录成功'.format(username,datetime.now()))NameError:name'datetime'isnotd......
  • Data structure and algorithm-One
    右边界左边界函数式编程传统的实现方式通常是将具体的功能代码直接写在方法内部。这样的实现方式对于固定的功能来说可能是足够的,但它的灵活性和复用性较低。每当需要不同的功能时,您需要编写新的方法或修改原有方法,这可能会导致代码的冗余和不易维护。而函数式编程的优点......
  • Django Form钩子方法源码分析
    1.用法 在Form类中定义名称为 clean_+form字段名称的方法校验成功返回self.clean_data["字段名"]校验失败会raise报错 2.源码分析先从is_valid方法开始分析 当self._is_bound=True,self.errors为False时校验成功1. self._is_bound 当django项目......
  • go 进阶训练营 微服务可用性(中)笔记
    过载保护令牌桶算法存放固定容量令牌的桶,按照固定速率往桶里添加令牌https://pkg.go.dev/golang.org/x/time/rate漏桶算法作为计量工具(TheLeakyBucketAlgorithmasaMeter)时,可以用于流量整形(TrafficShaping)和流量控制(TrafficPolicing)https://pkg.go.dev/go.uber.......
  • Django实现文件上传、文件列表查看、修改、限流和日志记录7
    Django实现文件上传、文件列表查看、修改、限流和日志记录7不管调用的接口在内网,还是外网都需要做好限制保证接口的访问和限流降级处理,本章节新增限流功能。限流功能主要针对两个方面:IP和用户针对IP限流文件列表接口进行限流处理,限制每分钟每个IP访问10次,你可以使用Dja......