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 ...
随机推荐
- eclipse快速查看工程代码行数
1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expression),并在搜索文本框输入\n ;3.在文件名中输入*或*.jav ...
- java - day006 - 构造方法
构造方法 新建对象是,执行的一个特殊方法 new 类名(); 这个小括号就是构造方法 Java 类中,必须有构造方法,如果自己不定义, 编译器会自动生成默认构造方法 new 关键字是新建对象用的, ...
- sortable.js 拖拽排序及配置项说明
// 拖动排序 $(function() { /*排序*/ //排序 // Simple list ]; new Sortable(list, { group: "name", a ...
- 项目中的Git七步精髓
项目中Git常用的七步操作: 1.git branch -a 查看所有分支 2.git checkout dev_yxq 如果冲突了,操作回退上一个版本, git status git checko ...
- 算法工程师<机器学习基础>
<机器学习基础> 逻辑回归,SVM,决策树 1.逻辑回归和SVM的区别是什么?各适用于解决什么问题? https://www.zhihu.com/question/24904422 2.L ...
- poj1456 Supermarket 贪心+并查集
题目链接:http://poj.org/problem?id=1456 题意:有n个物品(0 <= n <= 10000) ,每个物品有一个价格pi和一个保质期di (1 <= pi ...
- HTTP协议详解及http1.0与http1.1http2.0的区别
HTTP协议介绍 http(超文本传输协议)是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.特点: (1)支持客户/服务器模式. HTTP是一个客户端和服务器端请 ...
- python设计模式---行为型之观察者模式
比较常用咯~~ from django.test import TestCase from abc import ABCMeta, abstractmethod # 行为型设计模式---观察者模式 c ...
- PHP批量更新数据
/** * 批量更新函数 * @param $data array 待更新的数据,二维数组格式 * @param array $params array 值相同的条件,键值对应的一维数组 * @par ...
- 字符串正则匹配(递归/DP)
Wildcard-Matching & Regular Expression Matching Wildcard-Matching中?匹配任意一个字符,*匹配任意长度字符串包括空字符串 方法 ...