goland 提供三种快速生成 main 函数的方式:① 输入 pkgm+tab 生成含 package main 的模板,光标停在函数体内;② 新建名为 main.go 的文件自动套用含 fmt 导入的完整模板;③ alt+insert → generate → main function 插入无包声明的纯 func main()。

GoLand 里不用手敲 func main(),直接用模板或快捷键就能生成,而且能带包声明和 import。
用 pkgm 模板快速生成完整 main 包
在任意 Go 文件空白处输入 pkgm,然后按 Tab 键,GoLand 会自动展开为:
package main
func main() {
}
这个模板自带 package main 声明,光标会停在 main 函数体内,可直接写逻辑。它不依赖当前文件名或位置,新建文件后第一行就输 pkgm 最省事。
- 如果当前文件已有
package声明(比如package utils),pkgm仍会强行覆盖成package main—— 所以只在明确要建入口文件时用 - 该模板不含
import,需要额外引入标准库时得手动加,比如要打印就得补上import "fmt" - 模板名
pkgm是 Goland 内置 Live Template,无需额外配置,开箱即用
用 file template 创建新 .go 文件时自动生成 main
新建文件时不从空白开始,而是选「Go File」模板:右键项目目录 → New → Go File → 输入文件名(如 main.go)→ 回车。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
只要文件名是 main.go,GoLand 就会自动套用「Go Main File」模板,内容就是:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
- 这个行为由文件名触发,不是所有
.go文件都这样 —— 只有命名为main.go才生效 - 如果你改名成
app.go或server.go,哪怕内容一样,也不会自动加fmt导入,得自己补 - 模板里的
fmt.Println是占位符,删掉不影响编译,但留着能避免刚建文件就报 “imported and not used” 错误
Alt+Insert 菜单里找 Generate → Main Function
光标放在空文件或已有代码顶部,按 Alt+Insert(macOS 是 Cmd+N),选 Generate → Main Function。
它会插入一个最简 func main(),但不带 package 声明,也不管你当前文件是不是 main.go。
- 适合已有
package main的文件里补主函数,比如你先写了包声明,再想加入口 - 如果文件还没写
package行,它不会帮你补,直接插函数会导致编译失败 - 生成的函数体为空,不附带任何示例代码或 import,干净但需要你后续补全
真正容易被忽略的是:这三个方式生成的 main 函数,都不会自动加 os.Args 解析或 flag 支持 —— 那些得自己导入 "os" 或 "flag" 并写逻辑。别指望 IDE 猜你要命令行参数。










