单独模块中的命令

查看 go tool 源代码后,阅读此 SO 答案(和链接文章): 什么是布局 Go 项目的明智方法(将二进制文件与应用程序分离)


例如以下设置:


myapp/

  cmd/

    first/

      main.go

    second/

      main.go

    third/

      main.go

  otherpackage/

我很好奇您将如何实施/构建/调试这样的解决方案?


我是否应该在根目录中有一个 main.go,然后根据用户运行的命令以某种方式执行 cmd 目录中的不同包?或者如何在根目录中没有“主”包的情况下构建这个多命令包?


catspeake
浏览 175回答 1
1回答

繁花如伊

您不需要main.go根包中的 a 。如果您进入 myapp 文件夹并运行,go install ./...那么 Go 将递归搜索main()子文件夹中的函数。对于main()不同包中的每个函数,Go 会将其编译为包含所有必要包的单个可执行文件。在你的榜样,它会产生三个二进制文件:first,second和third关于实现/调试,您只需按照通常的方式进行即可。也就是说,您使用标准测试一一实现和测试您的包。如果要测试编译后的二进制文件,可以使用exec.Cmdstruct.另外,如果你想要好看的命令,你可以使用一些第三方库,比如cobra或cli
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go