我是goLang的新手。我正在尝试开发一个multiModule项目。我的工作区文件夹就像
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模块添加依赖项?
发布于 2022-04-09 02:16:16
这是一个常见的问题,许多新的高丽开发商。
在中,模块和包是不一样的。A模块可能包含一个或多个包。使用go mod init [modulename]命令初始化模块。此命令将创建一个go.mod文件。包可以简单地用package [packagename]在代码中定义。可以使用import "[packagename] [modulename]/[pathofpackage]"导入同一个模块中的包(让我们称之为本地包)
在这种情况下,如果不想创建不同的模块,可以在Authz和Products文件夹中删除go.mod和go.sum文件。然后在根文件夹中运行go mod init root。然后用类似于import (authz "root/authz")的东西在产品代码中导入auth包(authz是在Authz代码中被忽略的包名)
如果authz必须是不同的模块,那么它将被视为不同的模块,不能像本地包那样以抖动的方式导入。
要在Authz文件夹中导入本地模块,您需要编辑products文件夹中的go.mod文件,如下所示:
module somemodulename
go 1.16
require (
authzmodulename v0.0.0
)
replace authzmodulename v0.0.0 => ../Authz/发布于 2022-04-09 00:24:09
为了进行测试,只需在Product/main.go中添加引用Authz的导入
import com/mbt/authz/aPackage这假设您在与main不同的包中定义了Authz项目中的方法。
https://stackoverflow.com/questions/71803835
复制相似问题