您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
(lnt是什么意思)-lolnt是什么意思
命令,参数,命令行(lnt是什么意思)-lolnt是什么意思
发布时间:2020-12-06加入收藏来源:互联网点击:
4 配置文件与环境变量
除了通过命令行参数实现变量的绑定外,Cortana 还支持用户自定义绑定配置文件和环境变量,Cortana 并不负责配置文件或环境变量的解析,用户可以借助第三方库来实现这个需求。Cortana 在这里的主要作用是根据优先级合并不同来源的值。其遵循的优先级顺序如下:
默认值 配置文件 环境变量 参数Cortana 设计为便于用户使用任意格式的配置,用户只需要实现 Unmarshaler 接口即可,比如,使用 JSON 作为配置文件:
cortana.AddConfig("app.json", cortana.UnmarshalFunc(json.Unmarshal))Cortana 将配置文件或环境变量的解析完全交给第三方库,用户可以自由定义如何将配置文件绑定到变量,比如使用 jsonTag。
5 没有子命令?
Cortana 的设计将命令查找和参数解析解耦,因此两者可以分别独立使用,比如在没有子命令的场景下,直接在main函数中实现参数解析:
func main(){ args := struct { Version bool `cortana:"--version, -v, , print the command version"` }{} cortana.Parse(&args) if args.Version { fmt.Println("v0.1.1") return } // ...}$ ./app --versionv0.1.1六 总结命令行解析是一个大家都会用到,但并不是特别重要的功能,除非是专注于命令行使用的工具,一般程序我们都不需要过多关注命令行的解析,所以对于对这篇文章的主题感兴趣,并能读到文章最后的读者,我表示由衷的感谢。
flag库简单易用,cobra 功能丰富,这两个库已经几乎可以满足我们所有的需求。然而,我在编写命令行程序的过程中,总感到现有的库美中不足,flag库只解决标识解析的问题,cobra库虽然支持子命令和参数的解析,但把子命令和参数的解析耦合在一起,导致参数定义跟函数分离。Cortana的核心诉求是将命令查找和参数解析解耦,我通过重新回归命令行参数的本质,发明了启发式解析的方法,最终实现了上述目标。这种解耦使得 Cortana即具备 cobra一样的丰富功能,又有像 flag一样的使用体验。这种通过精巧设计而用非常简单的机制实现强大功能体验让我感到非常舒适,希望通过这篇文章,可以跟大家分享我的快乐。
项目地址:https://github.com/shafreeck/cortana
原文链接:http://click.aliyun.com/m/1000307362/
本文为阿里云原创内容,未经允许不得转载。
本文到此结束,希望对大家有所帮助呢。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |