golang 通过go get | go mod download下载安装包

安装完golang后,输入go env可以看到

GOPATH="/home/zhongzhanhui/go"
GOROOT="/usr/local/go"
GOBIN=""

1.go get

参考http://c.biancheng.net/view/123.html

go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install。

默认情况下,go get 可以直接使用。例如,想获取 go 的源码并编译,使用下面的命令行即可:

go get github.com/davyxu/cellnet

go get下载的依赖包会放到GOPATH 目录下,因此获取前需要确保 GOPATH 已经设置。Go 1.8 版本之后,GOPATH 默认在用户目录的 go 文件夹下。

总结:

  • GO111MODULE="auto" | "off"
    下载的包会安装在GOPATH/src下,import导入非标准包的时候也会从这个目录搜索。

  • GO111MODULE="on"
    下载的包会安装在GOPATH/pkg/mod/下,import导入非标准包的时候是从这个目录搜索,不会去GOPATH/src目录下找包。

2.go module

参考https://www.cnblogs.com/chnmig/p/11806609.htmlhttps://www.jianshu.com/p/bbed916d16eahttps://www.cnblogs.com/klsw/p/11537850.html这个很详细:goproxy和go modules的初步使用

go module是go官方自带的go依赖管理库。go module可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等,使用go module之后我们可不需要关心GOPATH,也不用将代码放置在src下了。

GO111MODULE=off: 不使用 modules 功能。
GO111MODULE=on: 使用 modules 功能,不会去 GOPATH 下面查找依赖包。
GO111MODULE=auto: Golang 自己检测是不是使用 modules 功能。

推荐使用 Go 模块时将 GO111MODULE 设置为 on而不是atuo,将以下语句添加进 ~/bashrc中,然后重开Terminal

vim ~/.bashrc
# 添加
export GO111MODULE=on

初始化

项目第一次使用 GO MODULE(项目中还没有go.mod文件) ,cd进入项目文件夹,初始化 MODULE

cd /home/zhongzhanhui/GoProject/Seckill
go mod init Seckill     #Seckill是项目名

此时项目根目录会出现一个 go.mod 文件,此时的 go.mod 文件只标识了项目名和go的版本,这是正常的,因为只是初始化了。 go.mod 文件内容如下:

module SecKillgo 1.13

检测依赖

go mod tidy

tidy会检测该文件夹目录下所有引入的依赖,写入 go.mod 文件,写入后会发现 go.mod 文件有所变动:

module SecKillgo 1.13require (github.com/gin-contrib/sessions v0.0.1github.com/gin-gonic/gin v1.5.0github.com/jinzhu/gorm v1.9.11github.com/kr/pretty v0.1.0 // indirectgopkg.in/yaml.v2 v2.2.2
)

此时依赖还是没有下载的。

下载依赖

我们需要将依赖下载至本地,但不使用 go get,而是使用以下命令

go mod download

然而如果你没有设置 GOPROXY 为国内镜像,这步百分百会卡死。

设置镜像的语句(最好把他们写进 ~/.bashrc 中,不然每次打开Terminal都要执行一次):

export GO111MODULE=on
export GOPROXY=https://goproxy.io

参考https://blog.csdn.net/mrtwenty/article/details/98451005

此时会将依赖全部下载至 GOPATH 下的pkg/mod文件夹中,比如此处会下载到/home/zhongzhanhui/go/pkg/mod中,同时会在项目根目录下生成 go.sum 文件, 该文件是依赖的详细依赖。但是我们开头说了,我们的项目是没有放到 GOPATH 下的,那么我们下载至 GOPATH 下是无用的,照样找不到这些包

似乎项目是可以找到放在GOPATH 下的依赖包的。

导入依赖

go mod vendor

执行此命令,会将刚才下载至 GOPATH 下的依赖转移至该项目根目录下的 vendor(自动新建) 文件夹下,此时我们就可以使用这些依赖了。然而实际不导入也是完全ok的。导入了反而更麻烦。

在协作中使用 GOMODULE时要注意的是, 在项目管理中,如使用git,请将 vendor 文件夹放入白名单,不然项目中带上包体积会很大。

git设置白名单方式为在git托管的项目根目录新建 .gitignore 文件

设置忽略即可。但是 go.mod 和 go.sum 不要忽略,另一人clone项目后在本地进行依赖更新(同上方依赖更新)即可。

3.GOLAND设置开启 GO MODULE

这部分看goproxy和go modules的初步使用 更详细。

可能是因为 GO MODULE 功能还需完善,GOLAND默认是关闭该功能的,我们需要手动打开。proxy应该填https://goproxy.io

在GoLand的setting中设置好GOPATH,然后在代码的import的依赖包处按 alt+enter ,同步依赖包即可,可以看到依赖包名会由红色变绿色。

依赖更新

这里的更新不是指版本的更新,而是指引入新依赖,不使用 go get ,我怎么在项目中加新包呢?

直接项目中 import 这个包,之后更新依赖即可依赖更新请从检测依赖部分一直执行即可,即

go mod tidy
go mod download
go mod vendor

GOMODULE常用命令

go mod init  # 初始化go.mod
go mod tidy  # 更新依赖文件
go mod download  # 下载依赖文件
go mod vendor  # 将依赖转移至本地的vendor文件
go mod edit  # 手动修改依赖文件
go mod graph  # 打印依赖图
go mod verify  # 校验依赖

原文链接:go安装依赖包(go get, go module)_zhongzhh8的博客-CSDN博客_go 安装依赖

golang 通过go get | go mod download下载安装包相关推荐

  1. Hadoop学习笔记(一)从官网下载安装包

    Hadoop是一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行快速运算和存储.要学习Hadoop从下载安装包開始 打开 ...

  2. YUM下载安装包及其所有依赖包

    系统的安装包和它的依赖包一次性下载下来 可以用系统yum自在的 downloadonly 参数 例如安装nginx和nginx所需所有依赖包 yum install --downloadonly -- ...

  3. 关于url网上下载安装包(java)

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...

  4. android_ android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术)/从酷安市场下载安装包

    android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术-) download app(apk) Releas ...

  5. python下载安装包-python安装包 官方版

    python是一款通用的计算机程序设计语言,能够快速的进行代码编写,而且python语言具有非常简捷而清晰的语法特点,几乎可以在任何操作系统中运行,是一款非常实用的代码编程语言.有需要的朋友可以到本站 ...

  6. EduSoho开源网校系统源码(附安装教程、下载安装包),支持开源免费下载

    文件大小 69M 运行环境 Linux 源码语言 PHP 授权形式 开源软件 操作系统 推荐Ubuntu16 授权协议 开源受限软件 软件类型 Web Application 软件官网 http:// ...

  7. r语言从网页下载东西内容 r安装特定版本的r包 r从网页下载 安装包

    加载 library(RCurl) getBinaryURL(url, -, .opts = list(), curl = getCurlHandle(), .buf = binaryBuffer(. ...

  8. Python在cmd下pip快速下载安装包的国内安装镜像

    cmd下安装报pip版本太老的错 python -m pip install --upgrade pip 下载安装包临时使用镜像可以加快下载速度 pip install numpy -i https: ...

  9. 微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包实现方式及源码

    需求:微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包 原因:在微信内不允许直接下载apk 这里有一个解决方案,直接上关键代码 <!doctype html> < ...

最新文章

  1. Awesome-XJTLU 项目宣传
  2. Log4Net 最简配置
  3. mysql录入foreigen错误_编译安装MySQL5.6失败的相关问题解决方案
  4. abaqus生成adams柔性体_Abaqus和STAR-CCM+流固耦合
  5. JAVA 蔡羽 基础知识漫谈
  6. debug运行时出现错误unicodedecodeerror_怎么回事??抖音直播伴侣!出现运行错误...
  7. CMD操作查看电脑IP
  8. [句子成分] 一、主语
  9. 国际数棋(图形界面、网络版、AI)
  10. 鸟哥的Linux私房菜
  11. 天才少女谷爱凌夺金!母亲毕业于北大,父亲毕业于哈佛,她将入读斯坦福…...
  12. 中学-综合素质【1】
  13. Java调用 新浪微博API 接口发微博(包含js微博组件、springMVC新浪登录)详解
  14. 百度天气预报接口使用详细
  15. Markdown操作之表格操作(插入,单元格内换行,居左、居右、居中)
  16. 如何用数字化构建企业的“韧性”?
  17. matlab中亚像素坐标位置,MATLAB+7.X生物信息工具箱的应用——序列比对(二)
  18. 近端算子及其FBS优化问题
  19. 张近东的大商之道:企业价值在于“为别人所用” | 一点财经
  20. Java异常(超详细!)

热门文章

  1. 类聚算法matlab,机器学习实战ByMatlab(一)KNN算法
  2. 5、交易开拓者-公式应用
  3. 阿里云环境下搭建HadoopHA集群
  4. open函数和 write函数
  5. 普安特:猫咪在什么状况下容易患湿疹?
  6. 集福宝- 支付宝 集福神器 2020 【三年集福老品牌】
  7. Flutter之BoxShadow组件
  8. 【数字信号处理】带通采样定理及其MATLAB仿真
  9. MSI及MSIX详解
  10. 类之间的关系:依赖、泛化、实现、关联、聚合、组合