go语言获取命令行参数
时间:2020-05-19
本文章向大家介绍go语言获取命令行参数,主要包括go语言获取命令行参数使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
go语言获取命令行参数
os.Args
这是符合简单使用的方式。
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Args)
}
编译后并在命令行中输入:./args_test par1 par2 par3
,会以空格分割。
输出:[./args_test par1 par2 par3]
// os.Args是一个[]string
os.Args[0] // 是可执行文件本身
// 其他的元素以os.Args[n]取值
跟明显,上面这种方式是不能指定参数的,所以这里引入另一种方式:
flag
代码中使用
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、 float64、string、duration。
flag | 命令行中输入值 |
---|---|
String | 合法字符串 |
Int、Int64、 Uint、Uint64 | 1234、0664、0x1234等类型,也可以是负数。 |
Float64 | 合法浮点数 |
Bool | 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。 |
Duration | 任何合法的时间段字符串。单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”(如”300ms”、”-1.5h”、”2h45m”) |
flag用两种使用方式:
- 1、返回数据类型的指针,不用自己提前声明 (如:
flag.String()
)
格式:变量(指针) := flag.String("参数名字", "默认值", "提示信息,可以--help显示")
如:
s := flag.String("name", "lczmx", "输入名字")
fmt.Println(*s)
- 将自己声明的指针传进flag中,不用接收值 (如:
flag.StringVar()
)
格式:
var 变量
flag.String(&变量,"参数名字", "默认值", "提示信息,可以--help显示")
flag.Parse()
// 之后就能操作该变量了
如:
var s string
flag.String(&s, "name", "lczmx", "输入名字")
flag.Parse()
fmt.Println(s)
注:以上的String可以换成其他类型(Int、Bool、Float64、Duration等)
通过以上两种方法定义好命令行flag参数后,还需要通过调用flag.Parse()来对命令行参数进行解析。
完整例子:
package main
import (
"flag"
"fmt"
"time"
)
func main() {
// 第一种方式
isOk := flag.Bool("isOk", false, "你ok吗?")
t := flag.Duration("time", time.Second, "时间")
// 第二种方式
var age int
flag.IntVar(&age, "age", 18, "年龄")
flag.Parse()
fmt.Println("isOk", *isOk)
fmt.Println("time", *t)
fmt.Println("age", age)
}
命令行中输入
命令行参数格式有以下几种,可以混用:
./main -age xxx
./main --age xxx
./main -age=xxx
./main --age=xxx
使用help
:(-h、--h、--help、-help),输出:
Usage of /tmp/go-build771233563/b001/exe/main:
-age int
年龄 (default 18)
-isOk
你ok吗?
-time duration
时间 (default 1s)
exit status 2
其他
flag.Args() ////返回命令行参数后的其他参数,以[]string类型
flag.NArg() //返回命令行参数后的其他参数个数
flag.NFlag() //返回使用的命令行参数个数
原文地址:https://www.cnblogs.com/lczmx/p/12915717.html
- COGS 1299. bplusa【听说比a+b还要水的大水题???】
- python学习笔记之运算符
- 锐捷网络NBR部分路由器cookie欺骗权限绕过
- 手写快排模版
- COGS 68. [NOIP2005] 采药【01背包复习】
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
- 我的第一个网页制作:Hello World!
- UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】
- Hyperledger - 超级账本项目:简介,安装,案例
- 我的第三个网页制作:b、i、s、u、sub、sup标签的使用
- 【AlphaGo Zero 核心技术-深度强化学习教程代码实战04】Agent类和SARSA算法实现
- 我的第二个网页制作:p,hn,br标签的使用
- 超级账本项目:架构设计
- 我的第四个网页制作:列表标签
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux服务器部署JavaWeb项目完整教程
- centos 6 安装vsftpd与PAM虚拟用户的方法
- CentOS6.8中/英文环境切换教程图解
- centos7.6 安装Tomcat-8.5.39的方法
- ubuntu14.04安装jdk1.8的教程
- Linux nohup实现后台运行程序及查看(nohup与&)
- 详解Linux 服务管理两种方式service和systemctl
- CentOS6.5安装python3.7详细步骤
- Centos7.5配置IP地址的实现
- linux里daily_routine实例代码详解
- 类Linux环境安装jdk1.8及环境变量配置详解
- CentOS7yum安装PHP7.2的操作方法
- CentOS 7中 Apache Web 服务器安装配置教程
- Win10安装Linux系统的教程图解
- 浅谈ubuntu执行.sh文件几种方式区别