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 + 声明依赖的流程,
但只要版本相同且本机缓存还在,就不会再消耗流量重新下载。

posted @ 2026-10-17 19:07  何人陪我共长生  阅读(2)  评论(0)    收藏  举报