首页 >后端开发 >Golang >如何在 Go 1.11 及更高版本中正确构建 Go 模块和项目?

如何在 Go 1.11 及更高版本中正确构建 Go 模块和项目?

Susan Sarandon
Susan Sarandon原创
2024-12-15 18:25:15234浏览

How to Properly Structure Go Modules and Projects in Go 1.11 and Beyond?

如何以新的方式构建 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn