如何以新的方式构建 Golang 模块和项目结构
在 Go 1.11 中引入的更新的模块系统中,引用的方法来自不同目录的模块已经演变。我们来探讨一下如何以新的方式实现这一点。
旧方式
以前,模块需要放在 GOPATH 中才能使用。通常,会在 GOPATH 中为每个项目创建一个文件夹。 “src”目录中的所有内容都可以导入和导出到软件中。
例如,考虑以下项目结构:
github.ibm.com/ └── Alessio-Savi └── GoLog-Viewer ├── conf ├── database ├── datastructure ├── GinProva.go ├── README.md ├── request └── resources
要导入 datastructs.go 文件,请使用以下语句可以使用:
import( "github.ibm.com/Alessio-Savi/GoLog-Viewer/datastructure" )
新方法
与引入go模块后,不再需要使用GOPATH。相反,“go mod init”命令可用于初始化新模块。这会生成两个文件:go.mod 和 go.sum。
go.mod 文件列出了模块所需的库和外部 Go 代码,而 go.sum 包含这些库的哈希值。
例如,考虑 GoGPUtils 库:
mkdir GoGPUtils cd $_ go mod init github.com/alessiosavi/GoGPUtils
go.mod 文件看起来像这样this:
module github.com/alessiosavi/GoGPUtils go 1.13 require ( github.com/alessiosavi/ahocorasick v0.0.3 golang.org/x/tools v0.0.0-20191031220737-6d8f1af9ccc0 // indirect )
要在模块中导入 ahocorasick 库,可以使用以下语句:
import ( ahocorasick "github.com/alessiosavi/ahocorasick" )
在您的示例场景中,要从 module1 访问 module2,您需要将 module2 的路径包含在 module1 的 go.mod 文件中。例如:
require ( github.com/your-username/module2 v0.0.1 )
以上是如何在 Go 1.11 及更高版本中正确构建 Go 模块和项目?的详细内容。更多信息请关注PHP中文网其他相关文章!