先看gopls装没装:执行go install golang.org/x/tools/gopls@latest,验证gopls version并确认其路径已加入PATH;再确保项目根目录含go.mod文件、VS Code以该目录为工作区打开,并设置"go.useLanguageServer": true。

go version 能跑,但 fmt. 没补全?先看 gopls 装没装
补全失效不是插件没装,而是 gopls 这个语言服务器根本没就位。VS Code 的 Go 插件只是个“遥控器”,gopls 才是真正干活的引擎。
- 在终端运行
go install golang.org/x/tools/gopls@latest(注意:不是go get,后者已弃用) - 安装完后,立刻验证:
gopls version应输出类似gopls v0.15.2的结果 - 如果报
command not found,说明gopls没进 PATH——查go env GOPATH,然后确认$(go env GOPATH)/bin已加入系统PATH - Windows 用户用
where gopls,macOS/Linux 用which gopls,拿到路径后,在 VS Code 设置里填到go.gopls.path字段中(必须是绝对路径,带 .exe 或无后缀均可)
打开文件夹就报“no modules found”?go.mod 是硬门槛
gopls 默认只在模块模式下工作。没有 go.mod,它连你项目里 import 的包都懒得索引,补全只剩 fmt、os 这几个标准库。
- 在项目根目录执行
go mod init example.com/myapp(模块名合法即可,不需真实存在) - 已有依赖?再跑一次
go mod tidy,生成完整go.mod和go.sum - VS Code 必须以这个含
go.mod的目录为工作区打开——不能只点开某个.go文件,也不能打开它的子文件夹 - 如果项目还在用
vendor/,优先迁移到模块模式;实在要用,加环境变量GOFLAGS="-mod=vendor",但补全质量会打折扣
settings.json 里这几行配置漏掉一个,补全就瘸腿
VS Code 的 Go 插件默认行为经常被覆盖或忽略,关键开关得手动钉死。
- 确保
"go.useLanguageServer": true—— 即使默认是 true,也建议显式写上,防止被旧配置或插件干扰 - 补全延迟?关掉干扰项:
"editor.suggest.snippetsPreventQuickSuggestions": false - 保存即格式化+整理 import:
"editor.formatOnSave": true和"editor.codeActionsOnSave": {"source.organizeImports": true} - 如果用多模块工作区(比如 monorepo),可试
"go.gopls.experimentalWorkspaceModule": true,但非必需
重启 gopls 不等于重启 VS Code
补全卡住、跳转失灵、状态栏一直显示 “Loading…”?别急着关编辑器,gopls 进程可能卡死或缓存错乱。
立即学习“go语言免费学习笔记(深入)”;
- 命令面板(
Ctrl+Shift+P)输入Go: Restart Language Server,这是最快恢复方式 - 右下角状态栏看到
gopls图标后,等几秒再试fmt.—— 真正加载完成会有提示 - 如果频繁崩溃,检查
go env GOPROXY是否设为国内镜像(如https://goproxy.cn),否则gopls启动时会卡在拉取依赖 - 不要手动删
$GOCACHE目录,除非明确知道某次构建污染了缓存;更稳妥的是重启gopls+ 清理 VS Code 输出面板里的 “Go” 日志


















