在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
命令行启动服务的方式,在后端使用非常广泛,如果有写过C语言的同学相信不难理解这一点!在C语言中,我们可以根据argc和argv来获取和解析命令行的参数,从而通过不同的参数调取不同的方法,同时也可以用Usage来打印帮助信息了。 那么开始今天的话题之前,我们回顾一下在C语言中是如何解析传递的参数的。 示例代码: 编译运行: 看完上面的例子,其实我们可以发现,上例中是C语言自带的参数解析,对于简单的参数构成还是可以使用的。下面我们再看一下Go语言os标准库的实现。 示例代码: 编译执行: 上例中,我们可以看到os.Args返回一个数组,数组里面是我们命令行执行时,所传递的参数和程序名称。os自带的参数获取,对于简单的参数来说还能使用,如果参数复杂的情况下,那么解析起来就比较费劲的。这个时候,我们可以选择Go语言的flag标准库来帮我们处理命令行解析工作。 Flag包:https://golang.org/pkg/flag/ 是Go语言提供的一个标准库,能够较为方便和灵活的解析命令行传递的参数。 flag有两种方式: 1、flag.Type,其中Type可以是:int、string、bool,float等类型,返回指针类型。 参数1:flag的名称 参数2:flag的值,上例中默认值是0 参数3:flag的描述 2、flag.TypeVar,将类型绑定到一个变量上。 参数1:flag的值 参数2:flag的名称 参数3:flag的值,上例中默认值是0 参数4:flag的描述 示例代码: 运行结果: 查看帮助: Flag语法:
Flag解析: parseOne()函数来处理-flag=value的,如果处理成功后,会将flag存储到FlagSet.actucal map[string]*Flag中。 flag.Parse()函数来解析命令行中的参数中定义的flag,该方法遇到第一个非flag的命令方法就中止。 1、non-flag的时候,会终止解析工作。
2、连续两个“-”的时候,会终止解析工作。 然后,再看我们传递错误的参数的返回情况。 跟踪到代码中可以看到如图:
从上例可见,其实flag并没有非常强大,下一章节会介绍一个更强大的命令行解析工具。 总结:
喜欢的话,可以关注公众号
|
请发表评论