Go标准库学习笔记-命令行工具(flag)

概述

在运行命令行程序时,通常通过命令行参数对程序运行进行配置。在go程序中使用flag包,可以快速构建命令行程序,对于程序使用者只需要声明所需命令行参数。

使用示例

创建命令行程序可以分为两步:

  • 声明命令行参数
  • 运行flag.Parse,对参数进行解析

然后就可以读取命令行参数了。例如如下程序可以创建一个命令行程序demo --foo hello --bar world

package main

import (
     "fmt"
     "flag"
)

func main() {
   foo := flag.String("foo", false, "Foo")
   bar := flag.String("bar", "", "Bar")

   flag.Pasrse()
   fmt.Print(*foo, *bar)
}

VarXXX 和 XXX

flag包中对多中提供了两类参数声明函数,下面以String类型为例,两个函数声明如下:

func String(name string, value string, usage string) *string

func StringVar(p *string, name string, value string, usage string)

String函数接收三个参数,分别是命令行参数名,即--<name>;参数默认值;参数描述,也就是help命令显示的帮助描述;并返回对应参数值的指针。StringVar与之不同在于将返回值改为函数参数。

除了对string类型的支持外,flag包还提供了多个类似的函数用于解析不同类型的参数,函数名进行对应的替换即可,包括:

  • Int,Int64,Uint
  • Bool
  • Float
  • Duration

其他

以上几乎就是使用flag包的全部了,flag包中的其他函数可以直接对其底层实现进行操作,普通命令行程序中不会使用。

在实际使用中,建议将参数声明部分放到var代码段中,对上面的代码进行修改后如下所示。

package main

import (
     "fmt"
     "flag"
)

var (
   foo = flag.Bool("foo", false, "Foo")
   bar = flag.String("bar", "", "Bar")
)

func main() {
   flag.Pasrse()
   fmt.Print(*foo, *bar)
}

更多GO标准库内容见 go-doc-zh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值