go 包管理
Go语言所依赖的所有的第三方库都放在GOPATH目录下面
gomodule是Go语言默认的依赖管理工具
Modules是相关Go包的集合,是源代码交换和版本控制的单元,用于指定使用哪些源文件
GO111MODULE=off禁用gomodule,编译时从GOPATH和vendor文件夹中查找包
GO111MODULE=on启用gomodule,编译时会忽略GOPATH和vendor文件夹,只根据go.mod下载依赖
GO111MODULE=auto,当项目在GOPATH/src目录之外,并且项目根目录有go.mod文件时,开启gomodule
通常将 GO111MODULE=on 设置为on
#go env -w GO111MODULE=on30.1 本地导入包
若工程文件目录结构如下
myfirstpro
--main/hello.go
--utils/utils.go
main文件夹下创建hello.go
package main
import (
"fmt"
"myfirstpro/utils"
)
func init() {
fmt.Println("pkg1--init")
}
func main() {
utils.PrintStr()
fmt.Println("start...")
fmt.Println("end.")
}
utils文件夹下创建utils/utils.go
package utils
import (
"fmt"
)
func PrintStr() {
fmt.Println("PrintStr")
}
Go Module(需要GO111MODULE=on)
在myfirstpro工程下打开终端输入下面命令
go mod init myfirstpro //创建go.mod文件
go mod tidy //把项目所需要的依赖添加到go.mod,并删除go.mod中,没有被项目使用的依赖
30.2 远程导入包
导入 github.com/gin-gonic/gin
hello.go 文件中添加
import "github.com/gin-gonic/gin"
终端下输入下面命令,包自动下载到 GOPATH下的pkg/mod 下面,同时更新 go.mod go.sum文件
go get github.com/gin-gonic/gin
或者 go mod tidy 自动下载依赖
30.3 别名
若报名很长或者包名冲突,可设置包的别名
import myAliasName "package_name"
30.4 匿名导入
导入了包,但不使用 ,此时依然会触发包的init函数
import _ "package_name"