go 1.16+ 必须启用 go111module=on,禁用 gopath;go mod init 的模块名需与 import 路径完全一致,且必须是完整路径(如 github.com/yourname/app),vs code 需打开含 go.mod 的项目根目录。

Go 1.16+ 不需要、也不应该配置 GOPATH;GO111MODULE 必须为 on,否则项目根本无法按预期解析 import 路径。
GO111MODULE=off 或 auto 是最常被忽略的致命开关
很多“环境搭好了但 import 报错”的问题,根源就在这里。执行 go env GO111MODULE,如果输出 off,模块系统完全关闭,所有依赖都会 fallback 到旧式 GOPATH 查找逻辑;如果输出 auto,行为会随当前目录是否含 go.mod 动态切换——同一命令在不同路径下可能成功或失败,极难调试。
- 立刻执行
go env -w GO111MODULE=on强制启用模块模式 - 检查
~/.bashrc、~/.zshrc或/etc/profile中是否残留export GO111MODULE=off,删掉它 - 重启终端,或运行
source ~/.zshrc(根据你实际 shell)让变更生效 - 再跑一次
go env GO111MODULE,确认输出是on
go mod init 后 import 路径报错?不是写法错,是模块名没对齐
典型错误:cannot find module providing package config 或 import "utils" not found。这不是漏了 ./ 前缀,而是 go mod init 声明的模块名和代码里写的 import 路径不一致。
初始化并管理阿里云SDK Go 客户端,涵盖 sync.Once 单例、goroutine 安全、endpoint 与 region 配置、VPC 端点及调试。
-
go mod init后面跟的不是本地文件夹名,而是将来要出现在 import 语句开头的完整路径,比如go mod init github.com/yourname/app - 之后所有 import 都必须以这个前缀开头,例如
import "github.com/yourname/app/config" - 如果项目原本在
$GOPATH/src/myapp下,别写go mod init myapp——这会导致 import 写成"myapp/config",模块模式下直接失败 - 子命令目录(如
cmd/server/main.go)里的import也必须用完整模块路径,不能只写"config"
VS Code 提示 “No modules found”?大概率是工作区没开对
这不是环境变量问题,而是编辑器没识别到模块上下文。gopls(Go 语言服务器)只在含 go.mod 的目录及其子目录中正常工作。
- 不要用 VS Code 打开整个
~/projects父文件夹;关掉窗口,重新用 VS Code 直接打开那个含go.mod的项目根目录 - 确认
go.mod文件存在且内容完整:至少包含module github.com/xxx/yyy和go 1.23(或你当前 Go 版本)两行 - 如果只有
module行,运行go mod tidy补全依赖和go版本声明 - 仍报红线?按
Ctrl+Shift+P→ 输入Go: Restart Language Server强制重载 gopls
真正容易被忽略的点在于:模块路径一旦通过 go mod init 设定,就锁死了所有 import 的前缀;改模块名不如重初始化,而重初始化又得同步改所有 import 语句——所以第一次 go mod init 的命名,必须和你最终想对外暴露的仓库地址一致。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










