美文网首页
go 命令行解析工具库 flag

go 命令行解析工具库 flag

作者: wayyyy | 来源:发表于2022-04-29 00:00 被阅读0次

工作中,经常需要开发一下命令行小工具,需要用到命令解析的功能,go flag 库可以快速的帮我们实现。

var (
    intFlag    int
    boolFlag   bool
    stringFlag string
)

func initCommand() {
    flag.BoolVar(&boolFlag, "boolFlag", false, "bool flag value")
    flag.IntVar(&intFlag, "intFlag", 0, "int flag value")
    flag.StringVar(&stringFlag, "stringFlag", "default", "string flag value")
}

func main() {
    initCommand()

    flag.Parse()

    fmt.Println("bool flag:", boolFlag)
    fmt.Println("int flag:", intFlag)
    fmt.Println("string flag:", stringFlag)
}

flag.IntVar(&intFlag, "intFlag", 0, "int flag value") 表示以形如 -intFlag 10格式解析一个 int 型参数。默认值为0, 解析出来的值等于 intFlag

命令行格式

支持3种命令行格式:

-flag  或者 --flag
-flag=x 或者 --flag=x
-flag x 或者 --flag x  // 非布尔类型才支持这种方式

- 和 -- 都可以使用,对于flag库它们的作用是一样的。
不带参数,输出默认值:

# ./flag 
bool flag: false
int flag: 0
string flag: default

字符串参数,需要使用""

# ./flag --stringFlag hello world
bool flag: false
int flag: 0
string flag: hello

# ./flag --stringFlag "hello world"
bool flag: false
int flag: 0
string flag: hello world

遇到第一个非选项参数(即不是以---开头的)或--,解析停止

# ./flag -intFlag 10 -- -boolFlag true 
bool flag: false
int flag: 10
string flag: default

# ./flag -intFlag 10 str -boolFlag true
bool flag: false
int flag: 10
string flag: default
flag 支持的参数类型

flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。

flag参数 有效值
flag.StringVar 合法字符串
flag.IntVar 1234、0664、0x1234等类型,也可以是负数。
浮点数flag 合法浮点数。
flag.BoolVar 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。
flag.DurationVar 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m” 合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。
长短型

前面提到flag 库 -v 和 --v 是一样的。但有时我们希望支持
-v--version,我们可以如下实现:

flag.BoolVar(&versionFlag, "v", false, "version flag value")
flag.BoolVar(&versionLongFlag, "version", false, "long version flag value")
子命令

参考资料
1、https://zhuanlan.zhihu.com/p/93321906
2、https://zhuanlan.zhihu.com/p/102579462

相关文章

  • Go标准库flag使用

    Go语言标准库flag基本使用 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简...

  • golang 命令行解析库cobra的使用

    golang 命令行解析库cobra的使用 ​ 关于go语言的命令行解析,标准库flag提供的功能比较...

  • go 工具库 flag

    工作中,经常需要开发一下命令行小工具,需要用到命令解析的功能,go flag 库可以快速的帮我们实现。 flag....

  • go 命令行解析工具库 flag

    工作中,经常需要开发一下命令行小工具,需要用到命令解析的功能,go flag 库可以快速的帮我们实现。 flag....

  • Go-flag包解析

    简介 godoc-flag 标准库-命令行参数解析flag cobra-解析命令 功能:flag实现命令行解析 使...

  • go-flag

    简介 在上一篇文章中,我们介绍了flag库。flag库是用于解析命令行选项的。但是flag有几个缺点: 不显示支持...

  • golang flag包使用笔记

    本文原文地址:flag - 命令行参数解析 在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求...

  • Go命令行类库推荐

    项目描述 go命令行管理工具,go 原生提供了flag管理命令行。使用起来诸多不便,所以整理如下框架实现。 使用入...

  • python 库收集

    基础库与工具日志处理系统工具邮件数据库打印输出命令行参数解析命令行界面库GUI 工具算法与设计模式并行计算、分布式...

  • golang 命令行参数解析 hflag

    简介 hflag 是被设计用来替代标准的 flag 库,提供更强大更灵活的命令行解析功能,相比标准库,hflag ...

网友评论

      本文标题:go 命令行解析工具库 flag

      本文链接:https://www.haomeiwen.com/subject/qdoxyrtx.html