登录
首页 >  Golang >  Go问答

适用于微服务的 Go 包

来源:stackoverflow

时间:2024-03-01 16:33:23 394浏览 收藏

你在学习Golang相关的知识吗?本文《适用于微服务的 Go 包》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

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

我对 go 的第一次测试都位于一个包中,一段时间后就会变得非常混乱

我来自 java 编程领域 - 拥有大量的包 - 这些包使内容保持清晰和干净。

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

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

这是我尝试过的:

我的go源码目录:

c:\my\path\to\go\src\

在此目录中,我有多个包含模块的子目录(实际上比此处列出的要多)

my-module1 
my-module2 
my-module3

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

package my-module1/util is not in GOROOT (c:\go\src\my-module1\util)

这显然是正确的,因为我的私有库位于 c:\my\path\to\go\src\

使用 go get ... 从 github 导入包可以正常工作(这些包将被加载但复制到 c:\go\src

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

我做错了什么?

如果需要更多信息,我会提供 - 请告诉我什么 注意: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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>