当前位置: 首页 > article >正文

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"


            
            
            
    
        
        
 


http://www.kler.cn/a/382506.html

相关文章:

  • [C++ 核心编程]笔记 4.4.1 全局函数做友元
  • 手边酒店多商户版V2源码独立部署_博纳软云
  • 框架学习01-Spring
  • 创建线程时传递参数给线程
  • MySQL查询where中包含多个in条件问题
  • 【ShuQiHere】️ 深入了解 ADB(Android Debug Bridge):您的 Android 开发利器!
  • 进程和线程概念
  • Transformer究竟是什么?预训练又指什么?BERT
  • 查看 Active NameNode 的服务 ID
  • TryHackMe | Active Directory Basics
  • 2024中国自动化大会(CAC2024)“智慧化工及复合人才培养”平行会议圆满落幕
  • 50. Pow(x, n)
  • android——jetpack startup初始化框架
  • 区别:矩阵合同和矩阵酉相似
  • Android15音频进阶之Cuttlefish搭建音频开发环境(九十二)
  • 了解数据库并发产生的问题
  • Claude发布桌面客户端!新功能支持分析100页PDF的图像!
  • 知识课堂——高匿ip在不同业务中的重要作用
  • 蓝桥杯真题——乐乐的序列和(C语言)
  • 每日算法一练:剑指offer——字符串篇(2)
  • Lua 怎么解决闭包内存泄漏问题
  • 【Java算法】分治--归并排序
  • C语言之写一个修改数组内容的函数
  • 【ChatGPT】如何使用条件逻辑让ChatGPT生成可选输出
  • 开源思维-到底什么是开源?
  • 【Allure】allure装饰器函数