📜  如何在 Golang 中创建模块?

📅  最后修改于: 2021-10-25 02:13:58             🧑  作者: Mango

从 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-Modules-1

我们现在可以检查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-Modules-4

下面列出了我们目录中的所有文件:

Go-Modules-5

注意: go 命令使用go.sum文件来确保这些模块的未来下载检索与第一次下载相同的位,并且您的项目所依赖的模块不会意外更改。