Go 每日一库之 flag

本文介绍了Go语言标准库flag的使用,包括命令行选项的解析、定义短选项、解析时间间隔、自定义选项和从程序中解析字符串。通过实例展示了如何在Go中处理命令行参数,帮助开发者更好地理解和应用flag库。
摘要由CSDN通过智能技术生成

缘起

我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复。这样会导致一篇博客的耗时过长。

我在每天浏览思否掘金Github的过程中,发现一些比较好的想法,有JS 每日一题NodeJS 每日一库每天一道面试题等等等等。https://github.com/parro-it/awesome-micro-npm-packages这个仓库收集 NodeJS 小型库,一天看一个不是梦!这也是我这个系列的灵感。我计划每天学习一个 Go 语言的库,输出一篇介绍型的博文。每天一库当然是理想状态,我心中的预期是一周 3-5 个。

今天是第一天,我们从一个基础库聊起————Go 标准库中的flag

简介

flag用于解析命令行选项。有过类 Unix 系统使用经验的童鞋对命令行选项应该不陌生。例如命令ls -al列出当前目录下所有文件和目录的详细信息,其中-al就是命令行选项。

命令行选项在实际开发中很常用,特别是在写工具的时候。

  • 指定配置文件的路径,如redis-server ./redis.conf以当前目录下的配置文件redis.conf启动 Redis 服务器;
  • 自定义某些参数,如python -m SimpleHTTPServer 8080启动一个 HTTP 服务器,监听 8080 端口。如果不指定,则默认监听 8000 端口。

快速使用

学习一个库的第一步当然是使用它。我们先看看flag库的基本使用:

package main

import (
  "fmt"
  "flag"
)

var (
  intflag int
  boolflag bool
  stringflag string
)

func init() {
  flag.IntVar(&intflag, "intflag", 0, "int flag value")
  flag.BoolVar(&boolflag, "boolflag", false, "bool flag value")
  flag.StringVar(&stringflag, "stringflag", "default", "string flag value")
}

func main() {
  flag.Parse()

  fmt.Println("int flag:", intflag)
  fmt.Println("bool flag:", boolflag)
  fmt.Println("string flag:", stringflag)
}

可以先编译程序,然后运行(我使用的是 Win10 Git Bash):

$ go build -o main.exe main.go
$ ./main.exe -intflag 12 -boolflag 1 -stringflag test

输出:

int flag: 12
bool flag: true
string flag: test

如果不设置某个选项,相应变量会取默认值:

$ ./main.exe -intflag 12 -boolflag 1

输出:

int flag: 12
bool flag: true
string flag: default

可以看到没有设置的选项stringflag为默认值default

还可以直接使用go run,这个命令会先编译程序生成可执行文件,然后执行该文件,将命令行中的其它选项传给这个程序。

$ go run main.go -intflag 12 -boolflag 1

可以使用-h显示选项帮助信息:

$ ./main.exe -h
Usage of D:\code\golang\src\github.com\darjun\cmd\flag\main.exe:
  -boolflag
        bool flag value
  -intflag int
        int flag value
  -stringflag str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值