go module
Posted 玖五二七
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go module相关的知识,希望对你有一定的参考价值。
GO Module
GO111MODULE=on
以上是开启go modules的前提条件之一,另外要go 1.17版本以上
Go Modules 方式下载下来的第三方库位在 $GOPATH/pkg/mod
文件夹里面
使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目,比如:
D:\\goproj\\modtest
这个不在我们的GOPATH中,以下指令初始化新module块
go mod init <packagename>
看到以下提示说明OK
PS D:\\goproj\\modtest> go mod init modtest
go: creating new go.mod: module modtest
go: to add module requirements and sums:
go mod tidy
PS D:\\goproj\\modtest>
此时文件夹会多一个go.mod的文件
module modtest
go 1.17
包含go.mod文件的目录也被称为模块根,也就是说,go.mod 文件的出现定义了它所在的目录为一个模块。
如何引入第三方包
我们要引入 github.com/headfirstgo/greeting 这个第三方包
在 模块根 下进行
go get github.com/headfirstgo/greeting
然后我们可以看到go.mod里面变成了
module modtest
go 1.17
// require github.com/jinzhu/configor
require (
github.com/BurntSushi/toml v0.3.1 // indirect
github.com/headfirstgo/greeting v0.0.0-20190504033635-66e7507184ee // indirect
github.com/headfirstgo/keyboard v0.0.0-20170926053303-9930bcf72703 // indirect
gopkg.in/yaml.v2 v2.2.2 // indirect
)
此时我们可以在main.go中引用并调用了
package main
import (
"fmt"
"github.com/headfirstgo/greeting"
)
func main()
greeting.Hello()
greeting.Hi()
引入自己的包
我们在开发大型项目的时候会组织目录结构,会有自己的包,自己的包全部放到 模块根下,现在创建一个submodule的文件夹,里面放a.go文件
package submodule
import (
"fmt"
)
func Sub()
fmt.Println("hello i am sub module")
然后在main.go中添加引用及调用
package main
import (
"fmt"
"modtest/submodule"
"github.com/headfirstgo/greeting"
)
func main()
submodule.Sub()
greeting.Hello()
greeting.Hi()
这样可以看到输出结果是
hello i am sub module
Hello!
Hi!
以上是关于go module的主要内容,如果未能解决你的问题,请参考以下文章