• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言获取命令行参数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

这是符合简单使用的方式。

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() //返回使用的命令行参数个数

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
UberGo语言编程规范发布时间:2022-07-10
下一篇:
Python 开发者在迁移到 Go(lang) 时需要知道哪些事?发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap