【问题标题】:Golang package that must also be useable standalone from cliGolang 包也必须在 cli 中独立使用
【发布时间】:2016-08-20 20:10:09
【问题描述】:

我想创建一个具有 main 函数并使用标志包指定参数的包。

此外,我希望能够将此包包含在其他包中,并使用与在 cli 上传递 args 类似的语法调用它的方法。可能是这样的

err := myPackage.setFlags(args ...string)
out, err := myPackage.exec() 

我希望包含的包具有主要功能的一些原因是:

  • 它使我能够将包分发为独立的可执行文件。我的用户可能不需要完整的系统

  • 它可以使手动故障排除更容易

我应该将所有内容分开并使用 os\exec 吗?

我是否应该为每个包创建独立的包装器(也许可以生成这些包装器?)并直接从整个系统调用导出的函数而不做 setFlags 的事情?

我可以遵循一个好的设计模式来做到这一点吗?

还是我想出了一个反模式?

【问题讨论】:

    标签: go


    【解决方案1】:

    一个常见的模式是在您的项目中有一个cmd pkg,其中包含可执行文件。

    类似的东西

    cmd/
       foo/main.go
    pkg/
       foo/foo.go
    

    cmd/foo 导入 pkg/foo 并处理命令行标志。 pkg/foo 是包含所有库代码的包。此模式允许其他人导入 pkg/foo 并且 cmd/foo 也会为您提供一个名为 foo 的可执行文件。

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 2023-01-08
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多