goland 中导入本地项目需通过 go.mod 的 replace 指令实现,目标模块必须有 go.mod 文件,修改后执行 go mod tidy 并手动 reload project,同时确保启用 go modules 集成且禁用 gopath 模式。

GoLand 里 import 本地其他项目,本质是 Go Modules 的问题
GoLand 本身不决定“能不能导入”,它只是忠实反映 go mod 的解析结果。如果你在代码里写 import "github.com/you/utils" 却报红或编译失败,不是 IDE 设置错了,而是 go.mod 没告诉 Go 工具链:“这个路径别去网上找,就用我本机的这个文件夹”。
必须用 replace,不能只靠目录结构或相对路径
常见错误是直接在 main.go 里写 import "./utils" 或 import "../utils" —— 这在 go mod 模式下会被忽略,go build 直接报错 no required module provides package。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
replace是唯一被官方支持且稳定的本地模块引用方式 - 目标模块(比如
utils)目录下必须有有效的go.mod文件(哪怕只有一行module github.com/you/utils) -
replace路径可以是相对路径(如../utils),也可以是绝对路径(如/Users/you/projects/utils),但必须指向一个含go.mod的目录 - 修改完
go.mod后,一定要运行go mod tidy,否则 GoLand 可能缓存旧状态,仍显示红色波浪线
GoLand 会自动识别 replace,但需要刷新索引
即使 go mod tidy 成功,GoLand 有时不会立刻更新符号跳转和补全。这不是 bug,是索引延迟。
- 手动触发:右键项目根目录 → Reload project
- 或者点击右上角 Go Modules 工具窗口里的刷新按钮(小圆圈箭头)
- 检查 Settings → Go → Go Modules 中是否勾选了 Enable Go Modules integration;如果没勾,GoLand 会退回到 GOPATH 模式,
replace完全无效 - 不要在 Settings → Go → GOPATH 里为当前项目设置 GOPATH —— 这会干扰 module 模式,导致本地替换失效
跨磁盘或深层嵌套路径时容易漏掉的事
比如 utils 在 D:\work\shared\utils,而主项目在 C:\dev\myapp,这时 replace github.com/you/utils => ../utils 就完全不对路。
- 必须用绝对路径:
replace github.com/you/utils => D:/work/shared/utils(Windows 下反斜杠要换成正斜杠或双反斜杠) - 路径中不能有中文、空格或 shell 特殊字符;如有,建议重命名或软链接到干净路径
- 如果
utils的go.mod里写的模块名是github.com/you/utils/v2,那replace行也必须严格匹配这个完整路径,不能少/v2 -
go run和go build能跑通 ≠ GoLand 能跳转 —— 后者依赖索引完整性,reload 是刚需
replace 路径没对上、目标模块缺 go.mod、或者 IDE 还在用 GOPATH 模式缓存旧状态。这三件事确认完,基本就没别的坑了。










