登录
首页 >  Golang >  Go问答

Go 多模块依赖管理

来源:stackoverflow

时间:2024-04-05 18:33:35 416浏览 收藏

积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Go 多模块依赖管理》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我是 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 中定义一个方法并调用它 来自产品的功能。我应该做什么,如何从本地工作区添加对产品模块的依赖项?


正确答案


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

在golang中,模块和包不是一回事。一个模块可能包含一个或多个包。模块使用 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/

要进行测试,只需向 product/main.go 添加引用 authz 的导入即可:

import com/mbt/authz/aPackage

这假设您在 authz 项目中的与 main 不同的包中定义了一个方法。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Go 多模块依赖管理》文章吧,也可关注golang学习网公众号了解相关技术文章。

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