Go模块用于微服务

  • 本文关键字:服务 用于 模块 Go go
  • 更新时间 :
  • 英文 :


我正在开发多个微服务,它们需要不同的模块(这些模块应该像github上的模块一样可用,但是私有的(

我使用Go的第一次测试都位于一个包中,经过一段时间后,这个包变得相当混乱

我来自Java方面的编程,有很多包,可以保持内容的清晰和干净。

(这也适用于公共模块,如github.com/xyz/module1 github.com/xyz/module2 github.com/XY z/module3(

我只需要这个用于私人模块-我该怎么做?

这是我尝试过的:

我的go来源目录:

C:mypathtogosrc

在这个目录中,我有多个包含模块的子目录(实际上比这里列出的更多(

my-module1 
my-module2 
my-module3

对于每个文件夹,我都调用了go mod init,但我收到的消息是

package my-module1/util is not in GOROOT (c:gosrcmy-module1util)

这显然是正确的,因为我的私人图书馆位于C:mypathtogosrc

使用go get ...从github导入程序包工作正常(这些程序包将被加载但复制到c:gosrc(

在一个文件夹中处理所有文件是可行的,但不是理想的解决方案(我需要创建多个微服务,因此我希望能够创建具有自定义可执行程序和/或测试的不同项目(

我做错了什么?

如果需要更多信息,我会提供——只要让我知道什么注意:package main中没有go文件的程序包不能通过go install安装。这个系统在我看来相当混乱——因为找不到模块。。。

最后我创建了一个多模块

意味着我有一个根文件夹(称之为root(,其中包含一个go.mod文件这定义了root模块

它需要我所有的子模块并且它将绝对路径替换为相对路径。

root
* aa
* ab
* bc

main被定义为

module root
go 1.15
require (
root/aa v0.0.0
root/ab v0.0.0
root/bc v0.0.0
)
replace (
root/aa => ./aa
root/ab => ./ab
root/bc => ./bc
)

所有的子模块都有一个非常简单的定义(这对所有模块都是相等的,只要你没有任何依赖关系(

module root/aa

最新更新