go 1.16+ 默认启用 go mod,无需设置 gopath;go version 能运行即环境正常,新建项目只需 go mod init 初始化模块并配置 goproxy(如 goproxy.cn),编辑器仅需官方 go 扩展与 gopls/dlv,开发坚持使用 go run/go build/go test 原生命令。

go version 能跑就别碰 GOPATH
Go 1.16 之后默认启用 go mod,GOPATH 已退化为缓存和工具存放目录,不是项目必需项。Windows 上装完官方 go1.22.0.windows-amd64.msi 后,go version 能输出即代表核心链路通了——不用手动设 GOPATH,更别往 %USERPROFILE%\go 里塞项目。
常见错误现象:go run main.go 报错 no required module provides package,其实是项目没初始化模块,不是环境问题。
- 新建项目目录后,直接执行
go mod init example.com/hello(模块名可任意,不一定要真实域名) - 确保项目根目录下有
go.mod文件,哪怕只有一行module example.com/hello - 不要把项目放在
%GOPATH%\src下——那是旧模式的陷阱,现代 Go 完全不需要
代理只配 GOPROXY,其他一概不动
国内拉依赖失败,99% 是因为没设 GOPROXY。这不是“优化”,是刚需;但只需这一项,其余如 GOSUMDB、GOINSECURE 在绝大多数场景下都不该动。
执行这条命令即可生效(PowerShell):
go env -w GOPROXY=https://goproxy.cn,direct
说明:
-
https://goproxy.cn是国内稳定镜像,支持校验和验证 -
direct表示当代理无法命中时,回退到直连——避免私有模块被拦截 - 别加
https://proxy.golang.org,它在国内基本不可用,反而拖慢go get - 不用设
GO111MODULE=on:Go 1.16+ 默认开启,设了反而可能覆盖行为
VS Code 只装 Go 扩展,禁用所有 lint 工具
想极简,就别让编辑器替你做决定。VS Code 安装官方 Go 扩展后,默认已启用语言服务器(gopls),提供跳转、补全、hover 提示——这就够了。
容易踩的坑:
- 执行
Go: Install/Update Tools时,**只勾选gopls和dlv(调试器)**,其余如golint、golangci-lint、goimports全部取消 - 在
settings.json中删掉所有go.lintTool、go.formatTool相关配置,保留默认格式化(gofmt)即可 - 关闭
go.autocompleteUnimportedPackages:它会触发后台下载,干扰纯净性
这样配置后,编辑器不会自动改代码、不会弹 lint 报错、不会偷偷下载工具——只响应你的明确操作。
构建和运行,坚持用原生命令
别装 air、fresh、gf 这类热重载工具,也别用 IDE 的“Run”按钮。极简的本质是掌控权在自己手上。
日常开发就靠这三条命令:
-
go run main.go:快速验证逻辑,无需生成文件 -
go build -o app.exe .:生成可执行文件,路径、名称、标志全由你指定 -
go test ./...:跑测试,不依赖任何第三方框架
性能与兼容性影响:
-
go run每次都编译,但对小项目几乎无感;大项目才需考虑go build+ 手动执行 - 避免
go build -ldflags="-H=windowsgui"这类定制参数——除非真需要隐藏控制台,否则增加复杂度且降低可移植性 - 所有命令都走 Go 原生工具链,不引入额外二进制、不污染 PATH、不绑定特定 IDE 版本
真正难的是克制:每次看到“推荐安装 XXX 工具”时,先问一句——它解决的是我的问题,还是别人的焦虑?
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











