为了账号安全,请及时绑定邮箱和手机立即绑定

Go多模块依赖管理

Go多模块依赖管理

Go
MMMHUHU 2022-11-28 14:50:31
我是 goLang 的新手。我正在尝试开发一个多模块项目。我的工作区文件夹就像root   1-Authz   1.1-Main.go   1.2-go.mod (contains:module com.mbt.authz)   1.3-go.sum   2-Product   2.1-Main.go   2.2-go.mod  (contains:module com.mbt.product)   2.3-go.sum   3-go.work   4-GoMultiModule.code-workspace   go.work folder is like    go 1.18   use(    ./Authz    ./Product   )两个模块都可以单独运行。但是我想在 Authz 中定义一个方法并从 Product 中调用该函数。我该怎么办,如何从我的本地工作区向 Product 模块添加依赖项?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

这是许多新的 golang 开发人员的常见问题解答。


在 golang 中,Module 和 Package 不是一回事。一个模块可能包含一个或多个包。模块用go mod init [modulename]命令初始化。此命令将创建一个 go.mod 文件。包可以简单地在代码中定义package [packagename]。可以导入同一模块中的包(我们称之为本地包)import "[packagename] [modulename]/[pathofpackage]"


在你的情况下,如果你不想创建不同的模块,你可以删除 Authz 和 Products 文件夹中的 go.mod 和 go.sum 文件。然后在根文件夹中,运行go mod init root. 然后在产品代码中导入 auth 包,例如import (authz "root/authz")(authz 是 Authz 代码中指定的包名称)


如果 authz 必须是不同的模块,它将被视为不同的模块,不能像本地包一样直接导入。


要在 Authz 文件夹中导入本地模块,您需要像这样编辑 products 文件夹中的 go.mod 文件:


module somemodulename


go 1.16


require (

    authzmodulename v0.0.0

)


replace authzmodulename v0.0.0 => ../Authz/


查看完整回答
反对 回复 2022-11-28
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

对于测试,只需添加到Product/main.go引用的导入Authz

import com/mbt/authz/aPackage

这假定您在不同于main, in Authzproject 的包中定义了一个方法。


查看完整回答
反对 回复 2022-11-28
  • 2 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号