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
Golang的模块管理Module的更多相关文章
- 包管理 import debug 模块管理 module
import sys, os this_file_abspath = os.path.dirname(os.path.abspath(__file__)) ProjectUtil_path = '{} ...
- 拜拜了,GOPATH君!新版本Golang的包管理入门教程
Go 1.11和1.12实现了对包管理的初步支持,Go的新依赖管理系统使依赖版本信息明确且易于管理.Using Go Modules - The Go Blog 新的包管理模式有什么不同? 作为Go语 ...
- MVC4做网站后台:模块管理1、修改模块信息
网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...
- 第二十章、启动流程、模块管理与 Loader grub
Boot Loader: Grub 『 boot loader 是加载核心的重要工具』!没有 boot loader 的话,那么 kernel 根本就没有办法被系统加载! boot loader 的两 ...
- Webpack: 为Web开发而生的模块管理器[转]
Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Se ...
- Perl模块管理
Perl模块管理 perl有自带的模块,还有第三方模块.自带的模块是随perl安装而安装好的,第三方模块需要从CPAN(Comprehensive Perl Archive Network)上下载并安 ...
- golang常用模块介绍
golang模块 一.命令行库Cobra Cobra提供简单的接口来创建强大的现代化CLI接口,比如git与go工具.Cobra同时也是一个程序, 用于创建CLI程序 https://www.jian ...
- dede模块管理一片空白或没有列表内容的解决办法
为什么dede后台模块管理,打开之后一片空白,又或者没有列表,插件与其他模块的使用也是正常的. 这主要是因为我们在安装模块,然后又卸载模块,卸载的时候选择了删除安装文件,就会出这个问题. 这里面分为两 ...
- 如何解决织梦DedeCMS后台模块管理列表不显示
在使用织梦Dedecms的过程中,我们会遇到模块管理列表无法显示的问题,造成织梦模块管理列表无法显示的原因,可能有很多种,现小编总结了遇到过的一种方法仅供参考. 方法步骤一: 由于/data/modu ...
随机推荐
- BZOJ 5093[Lydsy1711月赛]图的价值 线性做法
博主曾更过一篇复杂度为$O( k· \log k)$的多项式做法在这里 惊闻本题有$ O(k)$的神仙做法,说起神仙我就想起了于是就去学习了一波 幂与第二类斯特林数 推导看这里 $$ x^k=\sum ...
- AtCoder Grand Contest 030题解
第一次套刷AtCoder 体验良好 传送门 Poisonous Cookies cout<<b+min(c,a+b+); Tree Burning 难度跨度有点大啊 可以证明当第一次转向之 ...
- day 22 - 2 面向对象练习
练习一 在终端输出如下信息 小明,10岁,男,上山去砍柴小明,10岁,男,开车去东北小明,10岁,男,最爱大保健老李,90岁,男,上山去砍柴老李,90岁,男,开车去东北老李,90岁,男,最爱大保健老张 ...
- 题解:[GXOI/GZOI2019]与或和
开始完全没思路 在洛谷看到样例一,突发奇想,决定先做一下元素只有0/1的情况 发现子任务1是全1子矩阵 子任务2是总子矩阵个数减去全0子矩阵 发现全0/1矩阵可以构造单调栈解决.具体做法:前缀和求出每 ...
- [经验交流] 试用 grafana 报警功能
1. grafana 概述 grafana 是一款优秀的数据展示工具,几乎是各类时序数据库的前端标配系统.grafana 在V4版本中已经加入了报警功能. 2. influxdb 概述 influxd ...
- 【转】一文掌握 Linux 性能分析之内存篇
[转]一文掌握 Linux 性能分析之内存篇 前面我们已经学习了 CPU 篇,这篇来看下内存篇. 01 内存信息 同样在分析内存之前,我们得知到怎么查看系统内存信息,有以下几种方法. 1.1 /pro ...
- java学习笔记11-static关键字
如果在类中使用static关键字创建方法,这种方法称为类方法,可以在这个类中直接引用.而不是用static创建的方法.这种方法称为对象方法(实例方法),需要创建对象后才能使用. package les ...
- 【interview——Ali】project interview_18 summer
完全没有准备的一次面试……意外 两部分:Word2vec + 中位数 (还有聊对科研的想法和自己研究能力的评价? word2vec //解释模型 原本是one-hot,存在缺点:稀疏和无法表现语义,词 ...
- Percona 5.7.13 已经发布
Percona 5.7.13 已经正式发布,需要的人士可以去官方网站下载 https://www.percona.com/downloads/Percona-Server-5.7/Percona-Se ...
- 企业SVN版本控制服务器搭建
服务器端配置 svn安装部署 查看系统环境 cat /etc/redhat-release uname -a 安装svn yum install -y subversion 配置并启动svn 建立sv ...