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

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

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

Go命令行参数异常 flag provided but not defined: -xxxx_第1张图片程序中没有直接调用parseOne,我们找下调用它的原始函数,在Parse函数中。Go命令行参数异常 flag provided but not defined: -xxxx_第2张图片

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

如果你确实定义了:

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

Go命令行参数异常 flag provided but not defined: -xxxx_第3张图片

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

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

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

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

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

你可能感兴趣的:(go,go语言,gopher)