从 1.11 开始,Go 就包含了对版本模块的支持,最初的原型为vgo 。 Go 中模块的概念是为了处理 Go 应用程序中的依赖关系问题而引入的。收集并组合多个包以形成一个模块,该模块以树状结构存储在文件中,其根为go.mod文件。
注意:将系统中当前版本的 Go 更新到最新版本以使用 Go 模块。
现在让我们看看如何在 Golang 中创建模块。要创建模块,首先创建一个目录,然后使用以下命令进入其中:
mkdir go_modules
cd go_modules
要将当前目录初始化为允许我们管理依赖项的模块的根目录,请使用以下命令:
go mod init go_modules
由于我们在$GOPATH/src模块之外工作,我们需要在初始化期间明确指定模块的名称。
我们现在可以检查go.mod文件是否已创建,如果存在,则检查其内容。
下一步是使用以下代码创建一个简单的 Go 文件:
// file inside the current module
package gfg_go
import("fmt")
func initialiser() string {
fmt.Printf("In gfg_go package. \n")
// returns the current module
// and the package name
return_string := "Module : go_modules."
return return_string
}
为了测试上述函数,我们使用以下代码创建另一个 Go 文件:
package gfg_go
import (
"testing"
"fmt"
"strings"
)
// function to test if the original
// go program is working
func TestFunction(test *testing.T){
test_string1 := "go_modules"
// calling the function from
// the previous go file
res := strings.Split(initialiser(), ":")
// removing spaces and line-ending
// punctuation before comparing
test_string2 := strings.Trim(res[1], " .")
if test_string1 == test_string2 {
fmt.Printf("Successful!\n")
} else {
// this prints error message if
// strings do not match
test.Errorf("Error!\n")
}
}
运行go test命令后,我们应该看到我们的测试构建通过了!
向 Go 模块添加依赖项
要向我们的模块添加依赖项,我们将使用require()函数以及正在使用的模块的版本:
module go_modules
go 1.14
require github.com/rs/zerolog v1.14.3
我们包中的所有依赖项如下所示:
下面列出了我们目录中的所有文件:
注意: go 命令使用go.sum文件来确保这些模块的未来下载检索与第一次下载相同的位,并且您的项目所依赖的模块不会意外更改。