Go开发中经常使用命令行参数,如果你也遇到了这个异常,flag provided but not defined: -xxxx。那么可以参考下我的解决思路。
这个异常发出点在:flag包的 parseOne函数:
程序中没有直接调用parseOne,我们找下调用它的原始函数,在Parse函数中。
也就是说,程序执行过程中,在解析命令行参数时,发现你的命令行参数没有被定义过,所以抛出异常。
如果你确实定义了:
首先看一下,定义的命令行参数是否位于Parse函数的前面。
这个函数的调用,预示着程序中所有的参数定义完成。所以第二步看一下是不是有的参数后定义的,没有被解析。
如果以上都没有问题,那一定是引用的包中有涉及调用Parse函数,使得你自己定义的命令行参数没有被解析。
这个Parse函数只能被执行一次,否则会异常,所以在很多包中为了避免异常,使用了先判断再执行的方式。
if !flag.Parsed() {
flag.Parse()
}
有趣有料有温度,和我一起学技术!
欢迎关注公众号 来思Go,收看更多赖思与甜甜的技术学习日常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)