go语言安装包详细讲解
go语言安装的包在哪个地方
我们在安装热更新的时候,会使用这个命令
go install github.com/gravityblast/fresh@latest
安装了github.com/gin-gonic/gin这个包,这个包的内容是在哪里呢?
前端安装的vue,vuex,axios包,在node_modules中
那么 github.com/gin-gonic/gin是在哪里?
和前端 node_modules 的核心区别
以下是图片内容转换成的 Markdown 表格:
| 前端 npm | Go modules | |
|---|---|---|
| 存放位置 | 每个项目目录下一份 node_modules | 所有项目全局共享一份,在模块缓存里 |
| 具体路径 | 项目/node_modules/vue | GOMODCACHE/github.com/gin-gonic/gin@v1.12.0 |
| 版本区分 | 嵌套目录里塞不同版本 | 目录名上带版本号: gin@v1.12.0 |
| 依赖清单 | package.json | go.mod |
| 能否修改 | 能(但不推荐) | 只读,文件系统层面就是只读的 |
go中的包全局共享,不重复下载
假设你以后建 10 个 Gin 项目,npm 会在每个项目里各装一份 vue(10 份副本)
Go 只在C:\Users\code3\go\pkg\mod 里存一份gin@v1.12.0 ,10 个项目共用。
不同版本才会各存一份,比如同时存在gin@v1.10.0 和gin@v1.12.0 两个目录。
项目里靠 go.mod 记录"用哪个版本"
你的项目目录下没有包的副本,
只有 go.mod 里一行require github.com/gin-gonic/gin v1.12.0 声明依赖和版本,
编译时 Go 自动去全局缓存里找对应版本。
A项目安装的包packageA,B项目使用到相同的包,还需要再次安装packageA吗?
需要"声明",但不需要重新"下载" 。这是 Go 和 npm 的关键区别:
新项目里你不能直接 import,必须先让项目"认识"这个包。两种方式任选:
方式一:手动声明
go mod init myproject 初始化一个项目
go get github.com/gin-gonic/gin 最重要的就是这一个
方式 2 :先写代码 import ,再自动补依赖(更常用)
go mod init myproject
在 main. go 文件中 import "github.com/gin-gonic/gin"
go mod tidy
go mod tidy 会扫描你代码里所有 import,自动把依赖写进 go.mod 并下载缺失的包
为什么说不需要重新下载?
上次已经下载过gin@v1.12.0 到全局缓存C:\Users\code3\go\pkg\mod ,它在磁盘上一直存在。
go get 包名 或者 go mod tidy
- Go 发现本地缓存里已有 v1.12.0 → 直接复用,0 网络下载 ,瞬间完成
- 如果缓存没有(比如你换电脑了、或指定了别的版本)→ 才从网上下载
总结
总结 :每次新项目都要走一遍go mod init + 声明依赖的流程,
但只要版本相同且本机缓存还在,就不会再消耗流量重新下载。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号