在我学习 Go 并尝试使用 package 的早期阶段github.com/jessevdk/go-flags
。我检查了另一个线程中引用的 Fly 示例go-flags
,但它显然没有使用AddCommand
(至少根据我的 grep)。
godoc 文章建议定义一个全局解析器实例,并在单独的文件中实现每个命令。这些命令文件中的每一个都应该定义一个 go init 函数,该函数在全局解析器上调用 AddCommand。
使我的解析器全球化很容易。对init()
设置感到困惑:
1)我的理解是init()
订单执行是随机的,除了你的 main 的 init 最后运行。
2) 如果是这样,我无法确保NewParser()
在我的 AddCommand() 调用之前调用了我的配置代码中的调用。
3) 我的代码可以编译,但是 --help 没有显示任何已定义的命令,这让我认为确实,在
/* 只是猜测 */AddCommand()
之前调用了NewParser()
4) QED 我很困惑!
有人有推荐的例子我可以学习吗?