zoukankan      html  css  js  c++  java
  • 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 同样会下载依赖;

      执行完成后查看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代理
      由于某些原因,某些包不翻墙时不可以直接下得下来的,还好go mod提供了代理的设置,并且还提供了https://goproxy.io 代理服务,我们可以通过设置代理,下载golang.org/x/text等无法直接下载的第三方包;

      set GOPROXY = https://goproxy.io

  • 相关阅读:
    【字符比较】文件内容比较方法
    【linux】ubuntu修改系统时间
    【常用脚本记录3 -- 磁盘读写脚本】
    【常用脚本记录2---压力测试脚本】
    Shell脚本相关
    cifs
    【cli命令集】
    【wlan】iw命令集合
    【实用linux命令记录】
    iOS----------关于Cornerstone的偏好设置
  • 原文地址:https://www.cnblogs.com/softlin/p/10581862.html
Copyright © 2011-2022 走看看