go 1.21+ 不再需要手动配置 gopath,因模块模式已成默认,gopath 仅影响旧式 go install 调用;go get 自 go 1.17 起禁用于安装命令行工具,应改用 go install + @version。

Go 1.21+ 已不需要手动配置 GOPATH,也不推荐用 go get 安装命令行工具——直接用 go install + 模块模式即可跑起来。
为什么新项目别再碰 GOPATH
旧教程里反复强调设置 GOPATH,是因为 Go 1.11 之前依赖管理靠它。现在模块(go mod)是默认行为,GOPATH 只影响 go install 未加 @version 的旧式调用。强行设 GOPATH 反而容易让 go run 找错本地包、或误触发 vendor 目录加载。
- 确认是否启用模块:执行
go env GO111MODULE,输出on即正常 - 新建项目时,直接
go mod init example.com/myapp,无需进GOPATH/src - 如果
go version显示低于 1.16,升级——1.16 起GO111MODULE=on成为默认
go install 和 go get 到底该用哪个
go get 在 Go 1.17 后已弃用对命令行工具的安装能力,它现在只管更新 go.mod 里的依赖版本;装二进制工具必须用 go install,且必须带 @version 后缀。
在 Go 中使用 google/wire 实现编译时依赖注入——wire.NewSet、wire.Build、wire.Bind(接口→实现)、wire.Struct、wire.Value、wire.Interface
- 错误写法:
go get github.com/swaggo/swag/cmd/swag→ 会报go get: installing executables with 'go get' in module mode is deprecated - 正确写法:
go install github.com/swaggo/swag/cmd/swag@v1.19.0 - 不指定版本(如
@latest)可能因上游删 tag 导致失败,建议锁定小版本号 - 装完的二进制默认落在
$(go env GOPATH)/bin,确保该路径在$PATH中
VS Code 里调试器起不来?检查 dlv 安装方式
Go 扩展默认调用 dlv,但用 go install github.com/go-delve/delve/cmd/dlv@latest 装出来的二进制,可能和当前 Go 版本不兼容——尤其是 macOS M 系列或 Windows ARM64 用户。
- 优先用官方预编译包:去 Delve releases 页面 下载对应平台的
dlv,解压后放系统PATH目录下 - 验证:终端运行
dlv version,输出中应含Build infos且无 panic - VS Code 的
launch.json不用改,但需在设置里关掉go.toolsManagement.autoUpdate,避免插件偷偷覆盖你手动装的dlv
真正卡住人的从来不是“装不装得上”,而是版本对不上、路径没生效、或者误把模块模式当 GOPATH 用。多看 go env 输出,少抄三五年前的博客步骤。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










