golang开发:环境篇(七) Go mod 使用
Glide用的好好的,为什么要使用Modules
在 Go 1.11 中 ,官方加入package management tool,称为Go Modules。Go mod 没有出现之前,用的最多的包管理器就是 govendor、glide等,这些工具都未达到Go对包管理的预期,比如每次下载,比如墙外下载,比如对GOPATH的依赖,比如多版本的控制等等。然后Go Modules就出现了,它不依赖于GOPATH,只跟项目有关,可以指定代理,可以很容易的通过版本进行控制,摆脱GOPATH的依赖,也为Go以后的自由发展奠定了基础。
使用Go mod 命令管理包
命令 | 描述 |
---|---|
go init | 在当前目录项目下初始化mod |
go tidy | 拉取依赖的模块,移除不用的模块 |
go vendor | 将依赖复制到vendor下 |
go edit | 编辑go.mod |
go verify | 验证依赖是否正确 |
其实工作基本上都使用init和tidy就够了。
设置环境变量
GO111MODULE
有三个值,off、on、auto,off 和 on 即关闭和开启,auto 则会根据当前目录下是否有 go.mod 文件来判断是否使用 modules 功能。无论使用哪种模式,module 功能默认不在 GOPATH 目录下查找依赖文件。
GOPROXY
设置代理服务,https://goproxy.io。也可以自己搭代理服务,然后把 GOPROXY 设置为代理服务器的地址。
vim ~/.bash_profile
加入配置的两行
export GO111MODULE=on
export GOPROXY=https://goproxy.io
source ~/.bash_profile
举个栗子
创建项目 myproject
main.go
package main
import (
"github.com/satori/go.uuid"
"fmt"
)
func main() {
uid := uuid.NewV4()
fmt.Println(uid)
}
执行Go mod命令, init 和 tidy
go mod init
go: creating new go.mod: module myproject
go mod tidy
go: finding golang.org/x/tools latest
go: downloading golang.org/x/tools v0.0.0-20200415034506-5d8e1897c761
go: extracting golang.org/x/tools v0.0.0-20200415034506-5d8e1897c761
go: finding gopkg.in/check.v1 latest
go: downloading gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f
go: extracting gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f
go: finding github.com/niemeyer/pretty latest
go: downloading github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: extracting github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e
go: downloading github.com/kr/text v0.1.0
go: extracting github.com/kr/text v0.1.0
编译执行结果
go build main.go
./main
6723138d-ab2c-4de6-b996-732362985548
可以看下Go mod生成的最主要的文件 go.mod
cat go.mod
module myproject
go 1.13
require (
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
github.com/satori/go.uuid v1.2.0
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
)
每个包后面都跟了一个版本。如果想切换分支的话,后面的版本可以任意切换到需要的分支上,比如
require (
github.com/niemeyer/pretty master
github.com/satori/go.uuid v1.2.0
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
)
也可以使用本地代码替换远程代码分支。就可以使用下面的
/data/www/go/src/go.uuid 代替远程分支 github.com/satori/go.uuid。
在go.mod最后一行加上下面的代码
replace github.com/satori/go.uuid => /data/www/go/src/go.uuid
Go mod的使用是不是特别简单。
golang开发:环境篇(七) Go mod 使用的更多相关文章
- golang开发:环境篇(六) Go运行监控Supervisord的使用
为什么要使用Supervisord 17年第一次写Go项目的时候,用Go开发项目倒没没费多大劲,很快就开发完成了.到了在测试环境部署的时候,由于不知道有 Supervisord 这个软件,着实花了些功 ...
- golang开发:环境篇(五)实时加载工具gin的使用
gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率. 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须 ...
- golang开发:环境篇(四)包管理器 glide的使用
glide 是golang项目开发中是特别重要的软件,没有它,golang的项目可能都无法发布. 为什么要使用glide 平时我们开发Go项目的时候,使用第三方的包的时候都直接使用go get 去获取 ...
- Golang开发环境搭建-Vim篇
一.一个干净的环境 找个干净的基础环境,方便确认每个搭建步骤后的效果: Ubuntu 14.04 x86_64 vim version 7.4.52 go version go1.4beta1 lin ...
- Windows下visual studio code搭建golang开发环境
Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...
- linux golang开发环境配置(离线方式)
<获取开发工具> 到https://www.golangtc.com/download 下载安装包, 根据自己的系统选择合适的开发包,这里选择go.1.9.2.linux-amd6 ...
- window / Linux 下 Golang 开发环境的配置
一直专注于使用python语言进行程序开发,但是却又一直被它的性能问题所困扰,直到遇到了天生支持高并发的Golang,这似乎也成了学习go语言最理所当然的理由.下面介绍下Go语言开发环境搭建的步骤: ...
- Visual Studio Code配置GoLang开发环境
Visual Studio Code配置GoLang开发环境 在Visual Studio Code配置GoLang开发环境 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页: ...
- golang开发环境配置
下载安装 从 https://golang.org/dl/ 下载最新的安装包. windows直接执行exe,按指示进行安装(默认安装目录是:C:\Go) linxu解压后复制到你喜欢目录就行(一般放 ...
随机推荐
- 【SpringBoot基础系列-实战】如何指定 bean 最先加载(应用篇)
[基础系列-实战]如何指定 bean 最先加载(应用篇) 在日常的业务开发中,绝大多数我们都是不关注 bean 的加载顺序,然而如果在某些场景下,当我们希望某个 bean 优于其他的 bean 被实例 ...
- sessionStorage localStorage 和 cookie 之间的区别转
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- 使用docker构建hadoop集群
docker的使用越来越普遍了,大家不知道docker的还需要进一步学习一下.这次咱们使用docker去进行hadoop集群的构建. 使用docker构建的好处真的很多,一台电脑上可以学习安装很多想做 ...
- SpringMVC框架——视图解析
SpringMVC视图解析,就是将业务数据绑定给JSP域对象,并在客户端进行显示. 域对象: pageContext.request.session.application 业务数据绑定是有ViewR ...
- Linux提权小结
原文链接:http://zone.secevery.com/article/1104 Linux提权1.信息收集2.脏牛漏洞提权3.内核漏洞exp提权4.SUID提权 0x00 基础信息收集(1):内 ...
- Log4j模板
log4j.rootLogger=DEBUG, A1,A2 log4j.appender.A1.MaxFileSize=1kb #10个备份 log4j.appender.A1.MaxBackupIn ...
- cmdb客户端采集数据的完善
file文件自己去拷贝(这里不提供) custom_settings.py import os BASEDIR = os.path.dirname(os.path.dirname(os.path.ab ...
- redhat7安装
------------恢复内容开始------------ 新建虚拟机向导(自定义) 指定虚拟机安装位置,把他放在固态硬盘提升他的运行速度(不推荐,一般将位置定为非系统盘) 选择系统镜像文件 开机选 ...
- MySQL优化之慢查询日志
慢查询日志概述 所谓慢查询日志,就是用于记录MySQL中响应时间超过设定阈值的SQL语句,通过打开慢查询开关,MySQL会将大于阈值的SQL记录在日志中,以便于分析性能. 慢查询日志选项默认是关闭的, ...
- display:flex 简单记录
1.有写了 display:flex:这个就是 采用了 flex布局的 元素 这个元素可以 写 6个属性: flex-direction : row | column | row-reverse ...