GO111MODULE的功能:
//为了解决项目不用放在go的src目录下,src应该放一些官方的包,而不应该放项目
//模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,
//包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。 1.GO111MODULE介绍
GO111MODULE 有三个值:off, on和auto(默认值)
GO111MODULE=off //go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on //go命令行会使用modules,不会去GOPATH目录下查找。
GO111MODULE=auto //默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:
//当前目录在GOPATH/src之外且该目录包含go.mod文件。
//当前文件在包含go.mod文件的目录下面。 //当modules 功能启用时,依赖包的存放位置变更为$GOPATH/pkg,允许同一个package多个版本并存,且多个项目可以共享缓存的 module。 go mod 命令:
download //下载依赖包
edit //编辑go.mod
graph //打印模块依赖图
init //在当前目录初始化mod
tidy //拉取缺少的模块,移除不用的模块
vendor //将依赖复制到vendor下
verify //验证依赖是否正确
why //解释为什么需要依赖 //开启模块支持
set GO111MODULE=on //设置代理,windows是set,Lnix是export
set GOPROXY=https://goproxy.io //阿里云镜像
set GOPROXY=https://mirrors.aliyun.com/goproxy/
export GOPROXY=https://mirrors.aliyun.com/goproxy/ //go1.13版本可以使用以下方法
go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
go env -u 恢复初始设置 2.测试
//1.在GOPATH之外,新建文件夹,新建main.go
package main import (
"github.com/kataras/iris" "github.com/kataras/iris/middleware/logger"
"github.com/kataras/iris/middleware/recover"
) func main() {
app := iris.New()
app.Logger().SetLevel("debug")
app.Use(recover.New())
app.Use(logger.New())
app.Get("/", func (ctx iris.Context){
ctx.HTML("Hello========================")
}) app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
} //2.在main.go所在目录下打开cmd
//初始化mod,生成go.mod
go mod init 文件夹名
//go.mod文件一旦创建后,它的内容将会被go toolchain全面掌控。
//go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。 //go.mod 提供了module, require、replace和exclude 四个命令
//module 语句指定包的名字(路径)
//require 语句指定的依赖项模块
//replace 语句可以替换依赖项模块
//exclude 语句可以忽略依赖项模块 //go.mod文件如下:
//module 123
//
//go 1.13 //go mod tidy需要的依赖自动生成 require 语句
//go mod tidy 从 go.mod 删除不需要的依赖、新增需要的依赖,这个操作不会改变依赖版本
go mod tidy //加载依赖,可以省略这一步
//go.mod如下:
//module 123
//
//go 1.13
//
//require (
//github.com/astaxie/beego v1.12.1
//github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
//) //go 会自动生成一个 go.sum 文件来记录 dependency tree(依赖树)
//github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
//github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
//github.com/astaxie/beego v1.12.1 h1:dfpuoxpzLVgclveAXe4PyNKqkzgm5zF4tgF2B3kkM2I=
//github.com/astaxie/beego v1.12.1/go.mod
//。。。 //运行
go run main.go //没有go mod tidy的情况下,运行的过程中需要下载包,速度很慢,可以设置阿里云的镜像
//再次执行脚本 go run server.go 发现跳过了检查并安装依赖的步骤。
//可以使用命令 go list -m -u all 来检查可以升级的package,
//使用go get -u need-upgrade-package 升级后会将新的依赖版本更新到go.mod *
//也可以使用 go get -u 升级所有依赖 //生成exe文件
go build main.go //没有go mod tidy的情况下,运行的过程中需要下载包,速度很慢,可以设置阿里云的镜像 //将依赖复制到vendor下
//可以把vendork里面的文件夹复制到go的src中,这样就能在src下创建项目使用了
go mod vendor 3.解决go get命令下载包出问题
//设置GOPATH
//win10环境变量中添加,设置GOPATH,下载包的路径 //设置代理
//set GOPROXY=https://goproxy.io //下载iris
//下载iris的所有依赖包
//这些包并没有下载到 GOPATH/src 目录下,而是在 GOPATH/pkg/mod 目录中
//-x可以看到执行过程
go get github.com/kataras/iris
//-u 强制使用网络去更新包和它的依赖包
//-v 显示执行的命令
go get -v -u github.com/kataras/iris

  

GO111MODULE的更多相关文章

  1. golang版本管理工具GO111MODULE

    在go1.11版本前,想要对go语言包进行管理,只能依赖第三方库实现,比如Vendor,GoVendor,GoDep,Dep,Glide等等. 1. 开启GO111MODULE 用环境变量 GO111 ...

  2. GO111MODULE的设置(及GOPROXY)

    环境:win7  go1.13.1 早听说GO111MODULE大名,今天才测试成功,步骤如下: 因为我的Go version >= 1.13,直接用go env -w 设置(注意大小写) go ...

  3. gin+gorm

    在[环境变量]中添加如下[用户变量]/[系统变量]:GO111MODULE,值为on go mod init目录 在项目中新建文件main.go,并添加测试代码 package main import ...

  4. Go命令官方指南【原译】

    启动错误报告 编译包和依赖项 删除目标文件和缓存的文件 显示包或符号的文档 打印Go环境信息 更新包以使用新API Gofmt(重新格式化)包源 通过处理源生成Go文件 下载并安装包和依赖项 编译并安 ...

  5. Go依赖模块版本之Module避坑使用详解

    前提 对于Go的版本管理主要用过 glide,下面介绍 Go 1.11 之后官方支持的版本管理工具 mod. 关于 mod 官方给出了三个命令 go help mod.go help modules. ...

  6. go-mod 入门

    Q群有人问go mod 问题,自己也忘了些.顺便再整理下. GO111MODULE可以设置为三个字符串值之一:off,on或auto(默认值). off 则go命令从不使用新模块支持.它查找vendo ...

  7. Golang的模块管理Module

    Golang 1.11版本终于支持了官方的模块依赖管理功能,1.11以前想要实现依赖管理只能够通过借助第三方库来实现,1.11以前的版本Golang项目必须依赖以GOPATH,从当前版本开始Golan ...

  8. 一键解决 go get golang.org/x 包失败

    问题描述 当我们使用 go get.go install.go mod 等命令时,会自动下载相应的包或依赖包.但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况. ...

  9. 再探go modules:使用与细节

    还有半个月go1.12就要发布了.这是首个将go modules纳入正式支持的稳定版本. 距离go modules随着go1.11正式面向广大开发者进行体验也已经过去了半年,这段时间go module ...

随机推荐

  1. nginx反向代理(1)

    目录 反向代理 概述 nginx代理 proxy_pass 加与不加/ ================================================================ ...

  2. RHEL 8 安装 Oracle 19c 注意问题

    RedHat Enterprise Linux 8 版本静默安装 Oracle 数据库软件时,需注意的问题 来自博客园AskScuti 1. 提示缺少库文件 libnsl.so.1 2. 因着OS版本 ...

  3. JS将一个数组切分为多个数组

    function group(array, subGroupLength) { let index = 0; let newArray = []; while(index < array.len ...

  4. web服务器、Web中间件和Web容器的区别

    web服务器>web中间件>web容器 Tomcat(servlet容器)  是  Tomcat中间件  也是  Tomcat服务器 看了谢公子的csdn文章,让我彻底分清了这三者的区别. ...

  5. MPI Maelstrom POJ - 1502 floyd

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> usin ...

  6. Java8之Stream详解

    Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作.   一.流的初始化与转换   Java中的Stream的所有操作 ...

  7. Selenium chromeDriver启动时报错:session not created: This version of ChromeDriver only supports Chrome

    解决方案: 这是因为ChromeDriver与本地chrome浏览器的版本不一致导致 ChromeDriver下载地址:http://npm.taobao.org/mirrors/chromedriv ...

  8. Proxy SwitchyOmega 使用黑名单和白名单

    “黑名单”会告诉代理工具,黑名单(国外)里面的网站要使用代理:“白名单”会告诉代理工具,白名单(大陆网站)里面的网站直接连接,其余使用代理. 黑名单PAC 黑名单PAC两条(任选其一):https:/ ...

  9. spring boot no identifier specified for entity

    定义Id 时,引用的是 import org.springframework.data.annotation.Id;  实际应该引入: import javax.persistence.Id;

  10. flaskapp

    前置知识 https://blog.csdn.net/u013457794/article/details/88997699?depth_1-utm_source=distribute.pc_rele ...