Go语言中使用flag包对命令行进行参数解析的方法_Golang

flag
flag 是Go 标准库提供的解析命令行参数的包。

使用方式:

flag.Type(name, defValue, usage)

其中Type为String, Int, Bool等;并返回一个相应类型的指针。

flag.TypeVar(&flagvar, name, defValue, usage)

将flag绑定到一个变量上。

自定义flag
只要实现flag.Value接口即可:

type Value interface {
  String() string
  Set(string) error
}

通过如下方式定义该flag:

flag.Var(&flagvar, name, usage)

示例

package main
import "flag"
import "fmt"
import "strconv"
type percentage float32
func (p *percentage) Set(s string) error {
  v, err := strconv.ParseFloat(s, 32)
  *p = percentage(v)
  return err
}
func (p *percentage) String() string { return fmt.Sprintf("%f", *p) }
func main() {
  namePtr := flag.String("name", "lyh", "user's name")
  agePtr := flag.Int("age", 22, "user's age")
  vipPtr := flag.Bool("vip", true, "is a vip user")
  var email string
  flag.StringVar(&email, "email", "lyhopq@gmail.com", "user's email")
  var pop percentage
  flag.Var(&pop, "pop", "popularity")
  flag.Parse()
  others := flag.Args()
  fmt.Println("name:", *namePtr)
  fmt.Println("age:", *agePtr)
  fmt.Println("vip:", *vipPtr)
  fmt.Println("pop:", pop)
  fmt.Println("email:", email)
  fmt.Println("other:", others)
}
$ ./command-line-flags
name: lyh
age: 22
vip: true
email: lyhopq@gmail.com
other: []
$ ./command-line-flags -name golang -age 4 -vip=true -pop 99 简洁 高并发 等等
name: golang
age: 4
vip: true
pop: 99
email: lyhopq@gmail.com
other: [简洁 高并发 等等]
$ ./command-line-flags -h
Usage of ./command-line-flags:
 -age=22: user's age
 -email="lyhopq@gmail.com": user's email
 -name="lyh": user's name
 -pop=0.0: popularity
 -vip=true: is a vip user

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索go
, 命令行
, go语言
, golang
flag
c语言命令行参数解析、golang flag、golang flag 用法、golang flag包、golang flag.string,以便于您获取更多的相关知识。

时间: 2024-09-10 11:33:00

Go语言中使用flag包对命令行进行参数解析的方法_Golang的相关文章

go语言通过管道连接两个命令行进程的方法_Golang

本文实例讲述了go语言通过管道连接两个命令行进程的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (   "os"   "os/exec"   "fmt"   "flag"   "strings" ) func main() { generator := exec.Command("cmd1") consumer := exe

php连接不上mysql但mysql命令行操作正常的解决方法

 这篇文章主要介绍了php连接不上mysql但mysql命令行操作正常的解决方法,需要的朋友可以参考下 故障状况:php网站连接mysql失败,但在命令行下通过mysql命令可登录并正常操作. 解决方案: 1.命令行下登录mysql,执行以下命令:  代码如下:show variables like 'socket'; 执行后会得到类似于如下回显:  代码如下: "Variable_name"        "Value" "socket"  

Zend Framework基于Command命令行建立ZF项目的方法

本文实例讲述了Zend Framework基于Command命令行建立ZF项目的方法.分享给大家供大家参考,具体如下: zend framework 的项目结构比较复杂,但是有既定的结构.zf提供了使用Command生成项目结构的工具,使用非常方便,初学者可以不用为了复杂的结构而Orz. 使用前的一些配置. 涉及到的文件: 1.zf 的 library 2.bin zf下载时所带的bin文件夹 3.php.exe 第一步: 将library和bin文件夹拷贝到服务器根目录,我的服务器跟目录为E:

详解C语言中的#define宏定义命令用法_C 语言

#define命令#define定义了一个标识符及一个串.在源程序中每次遇到该标识符时,均以定义的串代换它.ANSI标准将标识符定义为宏名,将替换过程称为宏替换.命令的一般形式为: #define identifier string 注意: 1.该语句没有分号.在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束. 2.宏名定义后,即可成为其它宏名定义中的一部分. 3.宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换.例如: #define XYZ th

R语言中的机器学习包

Machine Learning & Statistical Learning (机器学习 & 统计学习) 网址:http://cran.r-project.org/web/views/MachineLearning.html维护人员:Torsten Hothorn 版本:2008-02-18 18:19:21 翻译:R-fox, 2008-03-18  机器学习是计算机科学和统计学的边缘交叉领域,R关于机器学习的包主要包括以下几个方面: 1)神经网络(Neural Networks): 

Java中使用设计模式来优化命令行交互程序的开发

人机交互的方式最初起始于命令行交互,虽然图形界面的交互方式应用越来越广泛,可是命令行交互仍然有着它不可替代的地位.命令行交互程序是以命令行方式进行的http://www.aliyun.com/zixun/aggregation/11432.html">人机交互,即用户按着程序的提示,一步步进行输入,而程序负责解释并最终执行指令. 本文以一个简单的部署 war 包的实例,说明在命令行交互程序设计中遇到的问题,以及如何使用设计模式来解决这些问题. 实例简介 在实例中,命令行交互程序给出了一组问

Linux 中 10 个有用的命令行补全例子

在 Linux 系统中,当你输入一个命令,再按两次 TAB 键,就会列出所有以你输入字符开头的可用命令.这并不新鲜,可能你已经知道了.这个功能被称作命令行补全bash completion.默认情况下,bash 命令行可以自动补全文件或目录名称.不过,我们可以增强 bash 命令补全功能,通过 complete 命令让它达到新的高度. 这个教程说明了我们是怎样使用可编程的命令行补全功能programmable completion把自动补全功能应用于选项或者命令行参数. 例如:在输入 write

Linux中10个有用的命令行补全例子_linux shell

在 Linux 系统中,当你输入一个命令,再按两次TAB 键,就会列出所有以你输入字符开头的可用命令.这并不新鲜,可能你已经知道了.这个功能被称作命令行补全bash completion.默认情况下,bash 命令行可以自动补全文件或目录名称.不过,我们可以增强 bash 命令补全功能,通过 complete 命令让它达到新的高度.  这个教程说明了我们是怎样使用可编程的命令行补全功能(programmable completion)把自动补全功能应用于选项或者命令行参数.  例如:在输入 wr

Linux系统中下载文件的wget命令行工具

简介 Linux系统中的wget是一个下载文件的命令行工具. 对于Linux用户是必不可少的工具,对于经常要下载一些软件或从远程服务器恢复备份到本地服务器,这个命令尤为重要.wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理. 自动下载 wget支持自动下载,即wget可以在用户退出系统的之后在后台执行.这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,这是个牛气冲天的功能. 完全重建 wget 可以跟踪HTML页面上的链接依次下载