Go命令行参数异常 flag provided but not defined: -xxxx

Go命令行参数异常 flag provided but not defined: -xxxx,第1张

Go开发中经常使用命令行参数,如果你也遇到了这个异常,flag provided but not defined: -xxxx。那么可以参考下我的解决思路。

这个异常发出点在:flag包的 parseOne函数:

程序中没有直接调用parseOne,我们找下调用它的原始函数,在Parse函数中。

也就是说,程序执行过程中,在解析命令行参数时,发现你的命令行参数没有被定义过,所以抛出异常。

如果你确实定义了:

首先看一下,定义的命令行参数是否位于Parse函数的前面。

这个函数的调用,预示着程序中所有的参数定义完成。所以第二步看一下是不是有的参数后定义的,没有被解析。

如果以上都没有问题,那一定是引用的包中有涉及调用Parse函数,使得你自己定义的命令行参数没有被解析。

这个Parse函数只能被执行一次,否则会异常,所以在很多包中为了避免异常,使用了先判断再执行的方式。

if !flag.Parsed() {
    flag.Parse()
}

有趣有料有温度,和我一起学技术!
欢迎关注公众号 来思Go,收看更多赖思与甜甜的技术学习日常。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/989879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存