<p>Ctrl + Shift + - 和 Ctrl + Shift + + 是全局折叠/展开快捷键,作用于整个文件所有可识别语法区域;Mac 用户对应 Cmd + Shift + - 和 Cmd + Shift + +;结构体需光标置于 struct 行才可整体折叠;//region 折叠仅限编辑器使用,go fmt 会报错;结构体折叠不联动隐藏其方法。</p>

Ctrl + Shift + - 和 Ctrl + Shift + + 是全局折叠/展开的开关
这两个快捷键作用于整个文件,不是当前光标所在块——按一次就收起所有函数、结构体、if/for 块、import 分组等可识别语法区域。Mac 用户对应的是 Cmd + Shift + - 和 Cmd + Shift + +。
容易踩的坑:
- 折叠后方法签名、结构体声明行(
type X struct {})仍可见,但内部字段和函数体全被隐藏; - 如果文件里混用了
//region,它们也会被一并折叠,且无法单独控制; - 误触发后想快速恢复?别连按
Ctrl + Shift + +,GoLand 有折叠深度限制,多次展开可能无效,直接用Ctrl + Shift + +一次即可完全展开(它不是“逐级”,而是“全量”)。
结构体字段不自动折叠,必须手动触发
GoLand 默认把 type User struct { ... } 当作一个不可折叠单元,哪怕它有 50 行字段,也不会像函数那样默认收起。真正生效的折叠动作,得靠光标位置:
- 把光标放在
struct关键字那行(比如type Config struct {),再按Ctrl + -,才能折叠整个结构体定义(含所有字段和结尾的}); - 光标若在字段中间或大括号内,
Ctrl + -只会按缩进层级折叠几行,不是你想要的“整个结构体”; -
Ctrl + Shift + -虽然能批量折叠,但它不区分结构体和其他代码块,常把 import、变量声明也一起干掉,反而更难定位。
//region 折叠只对编辑器有效,go fmt 会报错
想给结构体字段分组折叠(比如 DB 字段一组、HTTP 字段一组),可以用 //region DB fields + //endregion 包裹。GoLand 识别这个标记并提供折叠三角,但要注意:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 必须严格配对,
//region和//endregion不能有拼写错误、空格或换行遗漏; - 这种注释不是 Go 文档注释(doc comment),
go fmt运行时会报comment on line N is not a doc comment; - 仅限开发阶段临时使用,提交前建议删掉,否则 CI 流水线可能因格式检查失败而中断。
折叠后方法不会跟着结构体一起收起
这是最常被误解的一点:即使你把 type User struct { ... } 折叠成 type User struct {},所有 func (u *User) Save() error 这类方法依然独立显示在文件里,且无法通过结构体折叠联动隐藏。
目前没有原生方式实现“结构体 + 全部方法”一键折叠。强行用 if true { ... } 包裹再折叠,会破坏语义、干扰静态分析,也不被推荐。实际工作中,接受这个事实更省心——字段靠 Ctrl + - 收,方法靠 Ctrl + - 单独收,各自安好。
真正麻烦的不是怎么折,而是折叠后忘了某个字段叫 UpdatedAtNs 还是 UpdatedNs,尤其嵌套深、命名模糊时。展开确认的成本,比你预想的高得多。

















