Golang的模块管理Module

Golang 1.11版本终于支持了官方的模块依赖管理功能,1.11以前想要实现依赖管理只能够通过借助第三方库来实现,1.11以前的版本Golang项目必须依赖以GOPATH,从当前版本开始Golang项目可以完全脱离GOPATH目录而工作,GOPATH将会逐渐被移除;

Go Module

  Go mod的使用也比较简单,Golang新增了环境变量GO11MODULE用于控制对Module的支持;
  GO111MODULE = off
  关闭Module的支持,从GOPATH、vendor目录查找包
  GO111MODULE = auto
  根据当前目录情况启用Module支持或禁用,只当项目不在GOPATH/src目录当中,并且当前目录中存在go.mod文件时启用Module;
  GO111MODULE = on
  启用Module支持;

命令介绍

go mod download:下载模块到本地缓存
go mod edit:编辑go.mod文件
go mod graph:输出打印当前项目的依赖图
go mod init:创建新模块到当前目录
go mod vendor:将依赖拷贝到vendor目录下
go mod tidy:整理模块,移除为使用模块,添加缺少模块
go mod verify:验证模块正确性
go mod why:查找依赖

通过Golang Module创建模块

1、初始化模块
  创建项目modtest目录,进入modtest目录:
  执行 go mod init modtest初始化模块,可以看到初始化完成后当前目录下生成了一个go.mod文件,由于时刚初始化模块所以打开文件可以看到文件中只有一行:
  module modtest

2、在当前模块中引用其他第三方模块
  创建test.go文件

 package main

 import(
         "fmt"
         "github.com/go-redis/redis"
 )

 func main(){
    fmt.Println("引用第三方模块 ",redis.Client{})
 }

  执行go mod tidy 下载依赖,执行go run、go build 同样会下载依赖;

84976-20190322224118259-1167920501.png

  执行完成后查看go.mod即可看到相关依赖信息,在GOPATH/pkg/mod目录下可以看得到Golang module下来的所依赖的第三方包;
  此时的go.mod已经配置了模块所依赖的第三方包,go.mod内容如下:

3、在当前模块引用包

  在当前目录下创建 submod包(目录),进入submod目录创建sub.go文件

 package submod

 func Name(){

 }

  在项目根目录,修改test.go目录引用submod包

 package main

 import(
  "fmt"
  "github.com/go-redis/redis"
  "modtest/submod"
 )

 func main(){
  fmt.Println("测试 ",redis.Client{})
  fmt.Println("包引用 ",submod.Name)
 }

4、使用module代理
  由于某些原因,某些包不FQ时不可以直接下得下来的,还好go mod提供了代理的设置,并且还提供了https://goproxy.io 代理服务,我们可以通过设置代理,下载golang.org/x/text等无法直接下载的第三方包;

  set GOPROXY = https://goproxy.io

转载于:https://www.cnblogs.com/softlin/p/10581862.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值