使用Golang flag包解析字符串

本篇文章主要介绍如何使用flag包解析字符串,没有介绍flag包的详细使用,需要学习flag包如何使用的同学可以参考如下这篇文章:

Go语言中使用flag包对命令行进行参数解析的方法 https://www.jb51.net/article/82812.htm

 

Golang的flag包类似于c语言里面的getopt, getopt_long函数,都是用来解析命令行字符串的类似于如下格式

iptables -A INPUT -i eth0 -p tcp -j ACCEPT

首个字符串是程序名字,后面都是参数,这些参数可以使用flag包来解析。当然这是命令行提供字符串,如果字符串由其它来源提供的话,比如说程序启动后,收到字符串参数,这时候就不能够直接调用flag.Parse()来解析了,因为默认是从os.Args字符串切片中解析,flag包Parse源码

// Parse parses the command-line flags from os.Args[1:]. Must be called
// after all flags are defined and before flags are accessed by the program.
//默认从os.Args字符串切片中解析
func Parse() {
	// Ignore errors; CommandLine is set for ExitOnError.
	CommandLine.Parse(os.Args[1:])
}

这种情况下只需要构造好os.Args就又能够使用了,比如下面的例子:

//先将字符串分割成字符串切片
flags := strings.Split(Cmd, " ")


//重新构造os.Args
os.Args = os.Args[:0]

//将字符串切片追加到os.Args中
for _, value := range flags {
	os.Args = append(os.Args, value)
}

//调用flag包解析
flag.Parse()

使用flag前需要绑定好参数,参数只需绑定一次,多了会报错,如果重复调用flag.Parse的话,每次使用前需要将参数初始化,不然可能会残留上一次解析后的值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值