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的更多相关文章

  1. 包管理 import debug 模块管理 module

    import sys, os this_file_abspath = os.path.dirname(os.path.abspath(__file__)) ProjectUtil_path = '{} ...

  2. 拜拜了,GOPATH君!新版本Golang的包管理入门教程

    Go 1.11和1.12实现了对包管理的初步支持,Go的新依赖管理系统使依赖版本信息明确且易于管理.Using Go Modules - The Go Blog 新的包管理模式有什么不同? 作为Go语 ...

  3. MVC4做网站后台:模块管理1、修改模块信息

    网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...

  4. 第二十章、启动流程、模块管理与 Loader grub

    Boot Loader: Grub 『 boot loader 是加载核心的重要工具』!没有 boot loader 的话,那么 kernel 根本就没有办法被系统加载! boot loader 的两 ...

  5. Webpack: 为Web开发而生的模块管理器[转]

    Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Se ...

  6. Perl模块管理

    Perl模块管理 perl有自带的模块,还有第三方模块.自带的模块是随perl安装而安装好的,第三方模块需要从CPAN(Comprehensive Perl Archive Network)上下载并安 ...

  7. golang常用模块介绍

    golang模块 一.命令行库Cobra Cobra提供简单的接口来创建强大的现代化CLI接口,比如git与go工具.Cobra同时也是一个程序, 用于创建CLI程序 https://www.jian ...

  8. dede模块管理一片空白或没有列表内容的解决办法

    为什么dede后台模块管理,打开之后一片空白,又或者没有列表,插件与其他模块的使用也是正常的. 这主要是因为我们在安装模块,然后又卸载模块,卸载的时候选择了删除安装文件,就会出这个问题. 这里面分为两 ...

  9. 如何解决织梦DedeCMS后台模块管理列表不显示

    在使用织梦Dedecms的过程中,我们会遇到模块管理列表无法显示的问题,造成织梦模块管理列表无法显示的原因,可能有很多种,现小编总结了遇到过的一种方法仅供参考. 方法步骤一: 由于/data/modu ...

随机推荐

  1. Flask 之东方不败一

    1,flask的初始 flask是Python的一个轻量级的web框架,相当于django而言. 知识点Python 三大主流web框架的对比 1.Django 主要特点是大而全,集成了很多组件,例如 ...

  2. Mybatis操作oracle数据库的一些坑

    oracle区分大小写,如果不想区分,必须要用引号包住 使用mybatis的generator生成的时候,建议使用全大写表,中间用下划线隔开,会生成驼峰字段 oracle没有空字符串的概念 写myba ...

  3. pythonのdjango 信号

    一.内置信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. Model signals pre_init # d ...

  4. Django学习笔记(二)视图函数

    一.url映射 1.为什么回去urls.py文件中找映射? 在‘settings.py’文件中配置了‘ROOT_URLCONF’为‘urls.py’.所有的django回去urls.py中寻找. 2. ...

  5. git 命令笔记

    切换 git 远程仓库HEAD分支 $ git remote set-head origin some_branch

  6. adi i2s 提供的axi_lite接口说明

    总共定义了4个寄存器,位宽32位,也就是 偏移地址*4以下是PS写数据when 0 => I2S_RESET_REG <= wr_data; when 1 => I2S_CONTRO ...

  7. 20165314《网络对抗技术》week1 Exp0 Kali安装

    系统安装.网络配置 我的Kali安装是按照https://baijiahao.baidu.com/s?id=1610754152224855428&wfr=spider&for=pc进 ...

  8. mysql_config not found和error: command 'gcc' failed with exit status 1

    要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块. 下载地址:https://pypi.python.org/pypi/MySQ ...

  9. window 服务器 安装 sql server 2008 r2 express 并启用远程访问

    目前市面上的数据库服务器虽然好,但是并不便宜,一个月数千RMB, 我们可以通过在已有的数据库上自建数据库来解决 目前已知的SQL Server 2008 R2的版本有: 企业版.标准版.工作组版.We ...

  10. ansible字符串的处理

    ansible中字符串的处理 from_json json_query join select selectattr map list trim 列表和字典的处理 combine