1.介绍

当我们希望通过命令行启动Golang程序,获取输入的各种形式参数时,该如何处理呢?

2.os.Args

os.Args是一个string的切片,用来存储所有的命令行参数,包括go run main.go这部分,整体编译后实际是生成和运行的main.exe文件,所以第一个参数是main.exe。示例如下:

func main() {for i ,v := range os.Args {fmt.Println(i, v)}
}

命令行携带参数启动:go run main.go -name korbin aaa bbb ccc,运行结果如下:

0 C:\Users\Korbin\AppData\Local\Temp\go-build427584346\b001\exe\main.exe
1 -name
2 korbin
3 aaa
4 bbb
5 ccc

3.flag包

Golang内置的flag包提供了一系列解析命令行参数的功能接口,使用flag主要包括以下几步:

3.1 定义flag命令行参数

第一步首先定义命令行参数,有如下三种方式:

1.通过flag.String(), Bool(), Int()flag.Xxx()方法,该种方式返回一个相应的指针:

ip := flag.Int("name", "korbin", "the author's name")

方法中有三个参数:
name:表示指定的参数名,在命令行中输入为-name或–name
value:表示默认值
usage:参数说明描述

2.通过flag.XxxVar()方法将参数值绑定到一个变量,该种方式无返回值,如:

var name string
flag.StringVar(&name , "name", "korbin", "the author's name")

方法的第一个参数为绑定的变量,传指针;后续参数和上述相同。

3.通过flag.Var()绑定自定义类型,自定义类型需要实现Value接口(Receives必须为指针),如:

flag.Var(&name, "name", "the author's name")

对于这种类型的flag,默认值为该变量类型的初始值,即输入的是int类型则默认为0,string默认为空等。

3.2 flag.Parse()

第二步,调用flag.Parse() 将命令行参数解析到定义的flag:

flag.Parse()

解析函数将会在碰到第一个非flag命令行参数时停止,非flag命令行参数是指不满足命令行语法的参数,如命令行参数为cmd --flag=true abc则第一个非 flag 命令行参数为“abc”

3.3 使用命令行参数

通过上述定义参数和解析参数两步,就已经是可以拿到我们的参数了。并且对于非命令行参数,还可通过flag.Args(), flag.Arg(i)来获取 ~

完整的示例如下:

package mainimport ("flag""fmt""os"
)func main() {s := flag.String("name", "korbin", "这是作者的姓名")flag.Parse()fmt.Println("命令行参数name的值:",*s)fmt.Printf("非命令行参数切片:%v", flag.Args())
}

命令行携带参数启动:go run main.go -name korbin aaa bbb ccc,运行结果如下:

命令行参数name的值: korbin
非命令行参数切片:[aaa bbb ccc]

Golang获取命令行参数的方式相关推荐

  1. c语言程序的命令行输入,C程序获取命令行参数

    命令行参数 命令行界面中,可执行文件可以在键入命令的同一行中获取参数用于具体的执行命令.无论是Python.Java还是C等等,这些语言都能够获取命令行参数(Command-line argument ...

  2. Go获取命令行参数及信号量处理

    部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库. golang os库获取命令行参数 os可以通过变量Args来获取命令参数 ...

  3. Python:获取命令行参数

    使用sys模块 代码: import sysprint("第1个参数是:" + sys.argv[0]) print("第2个参数是:" + sys.argv[ ...

  4. python 命令行参数-python获取命令行参数的方法(汇总)

    介绍python获取命令行参数的方法:getopt模和argparse模块. python版本:2.7 一.getopt模块 主要用到了模块中的函数: options, args = getopt.g ...

  5. MFC 获取命令行参数

    在MFC程序中,可以用以下几种方法来获取命令行参数. 为方便说明,我们假设执行了命令:C:/test/app.exe -1 -2 方法一 ::GetCommandLine(); 将获取到 " ...

  6. MFC中获取命令行参数的几种方法

    在MFC程序中,可以用以下几种方法来获取命令行参数. 为方便说明,我们假设执行了命令:C:/test/app.exe -1 -2 方法一 ::GetCommandLine(); 将获取到 " ...

  7. python获取命令行参数_Python获取命令行参数的正确方法,案例详解

    最近编写一个python程序的时候,需要去获取python命令行的参数,因此这里记录下如何获取命令行参数的方法. 一.sys 模块 在 Python 中,sys 模块是一个非常常用且十分重要的模块,通 ...

  8. 【WPF】如何获取命令行参数

    应用程序以 Main 方法为入口点,如果为 Main 方法指定一个 string[] 类型的参数,在程序运行时,这个参数会获取到传递给应用程序的命令行参数. 而 WPF 应用程序比较特殊,因为在VS中 ...

  9. php cmd 命令行参数,php获取命令行参数

    $argv获取 $argv 可以捕获命令行中php命令后的参数, 以空格分离 // 参考下面所示 var_dump($argv); // 执行命令 // $ php getopt.php www.01 ...

最新文章

  1. PermGen space
  2. MATLAB工作环境
  3. sql_1-2_get基于盲注
  4. ora03135连接失去联系 进程id 0_进程组、会话、控制终端概念,如何创建守护进程?...
  5. Android 面试 缓存,荐【经典面试题】七大缓存经典问题...
  6. 2018宝鸡市高三数学第一次质量检测
  7. 微信小程序根据sourceMap 定位代码错误位置
  8. 30005 rust_RUSTJKD超级防锈涂料
  9. html table vtop,在html中實現可輸入的下拉列表
  10. 充分利用 cpu_充分利用设计学校(已更新)
  11. RC电路的充放过程C语言实现,一种快速放电的RC充放电电路的制作方法
  12. 时间字符串转Timestamp时间戳
  13. GPIO口 多引脚操作
  14. 51单片机 16X16点阵循环滚动显示汉字(基于proteus)
  15. 小蜜智能对话开发平台
  16. 超声波测距仪编程_超声波测距仪的设计和实现
  17. 5.30 USB接口的定义 (10分)
  18. 请求头是针对服务器_什么是无头服务器?
  19. Excel平均值运算2种操作,不会函数也可轻松上手
  20. 700元行踪被卖,开车被盗刷 ETC,上网遭遇连锁蓝屏,惨惨惨 | 宅客周刊

热门文章

  1. MFC界面库BCGControlBar的介绍
  2. vue element UI 按需引入找不到.babelrc
  3. 结合验证码识别的暴力破解
  4. Grab Cut算法
  5. 检测Python代码规范--Flake8
  6. 快照测试_什么是快照测试,并且在PHP中可行?
  7. linux获得系统时间 c,linux c 获取系统时间的方法
  8. java 生成证书图片_java生成自定义证书图片4
  9. 【Java秒杀方案】11.功能开发-【商品秒杀及优化】防止超卖 接口优化(redis预减库存,内存标记减少redis访问,RabbitMQ异步下单) 安全优化(隐藏秒杀接口,验证码,接口防刷)
  10. Java创建对象的5种方式