go 包管理

时间:2024-11-03 09:53:46

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"