第一个 Go 程序
本教程共 80 篇 · 第 3 篇 · 更新于 2026-07-27 · 约 7 分钟阅读
3. 第一个 Go 程序
本节目标:写出你的第一个 Go 程序,学会用 go run / build / install 三个命令,看懂代码每一行的含义。
创建项目目录
先找一个你喜欢的位置,创建一个文件夹来放代码。打开终端:
mkdir hello
cd hello
初始化模块
Go 1.26 默认使用模块模式,每个项目都需要一个 go.mod 文件来管理依赖。在项目目录下执行:
go mod init example/hello
你会看到:
go: creating new go.mod: module example/hello
这时候目录里多了一个 go.mod 文件,内容大概是:
module example/hello
go 1.25.0
NoteGo 1.26 的
go mod init默认写入go 1.25.0(比当前大版本低一个小版本),这是为了兼容性考虑。这不影响你使用 1.26 的特性。
module example/hello 是模块路径,相当于这个项目的唯一标识。实际开发中通常用仓库地址,比如 github.com/你的用户名/项目名。
写代码
在 hello 目录下创建一个文件,命名为 hello.go,输入以下内容:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
保存文件。这就是你的第一个 Go 程序,一共 5 行有效代码。
逐行解读
我来一行一行讲。
package main
package main
这行声明了代码所属的包(Package)。Go 的每个源文件都必须属于一个包。
main 是一个特殊的包名,表示这是一个可执行程序而不是库。Go 编译器看到 package main,就会去找里面的 main 函数,把它作为程序入口。
import “fmt”
import "fmt"
这行导入了标准库里的 fmt 包。fmt 是 format 的缩写,专门用来做格式化输入输出的。
fmt.Println 这个函数就是从这来的。如果没导入,你用不了它。
func main()
func main() {
func 是声明函数的关键字,main 是函数名。main 函数是整个程序的入口—程序运行时,从这里开始执行。
括号 () 里是参数,这里是空的表示不需要参数。
fmt.Println(“Hello, World!”)
fmt.Println("Hello, World!")
这行调用 fmt 包的 Println 函数,把 "Hello, World!" 打印到屏幕上,末尾自动加换行。
注意 Go 用花括号 {} 来标记代码块,和 C/Java 一样。但 Go 有个规则:左花括号必须和函数声明在同一行,不能另起一行。
运行程序
go run
最简单的方式,直接运行:
go run hello.go
或者:
go run .
. 表示当前目录。Go 会自动找到 main 包里的 main 函数来执行。
你会看到输出:
Hello, World!
go run 是开发时最常用的命令,它会编译并立即运行,不会生成可执行文件。改完代码马上就能看到结果。
go build
如果你想生成一个可执行文件:
go build
执行后,目录里会多出一个 hello.exe(Windows)或 hello(macOS/Linux)文件。你可以直接运行它:
# Windows
hello.exe
# macOS/Linux
./hello
go build 适合在要部署或分发程序时使用。生成的二进制文件包含了所有依赖,不需要目标机器上装 Go。
go install
go install 和 go build 类似,但它会把编译好的二进制文件安装到 $GOPATH/bin 目录下:
go install
装好之后,你可以在任何地方直接输入 hello 来运行这个程序(前提是你把 $GOPATH/bin 加到了 PATH 里)。
三个命令的区别:
| 命令 | 作用 | 产物 |
|---|---|---|
go run | 编译并立即运行 | 不留文件 |
go build | 编译生成可执行文件 | 当前目录下 |
go install | 编译并安装到全局 | $GOPATH/bin 下 |
Tip日常开发用
go run,需要部署时用go build,装命令行工具时用go install。
加点花样
我们来改一下程序,让它更有意思一点:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
fmt.Println("你好,Go!")
fmt.Println("I'm learning Go.")
}
运行看看:
go run .
输出:
Hello, World!
你好,Go!
I'm learning Go.
Go 的字符串原生支持 UTF-8,中文直接就能打印,不需要额外处理。
代码格式化
写完代码,你可以用 go fmt 命令自动格式化:
go fmt
它会把你的代码统一成标准格式—缩进、空格、花括号位置全部对齐。团队协作时这个功能特别有用,不用争论代码风格了。
常见错误
找不到 main 包
如果你运行时报这个错:
go run: cannot run non-main package
说明你的文件第一行不是 package main。可执行程序的包名必须是 main。
花括号换行
这样写会报错:
func main()
{
fmt.Println("Hello")
}
Go 的编译器会自动在行尾插入分号,函数声明的 { 必须跟在 func main() 同一行。
大小写搞错
fmt.println("Hello") // 错误
fmt.Println("Hello") // 正确
Go 严格区分大小写。Println 的 P 必须大写,小写 p 的 println 是另一个东西。
学完这节你能做什么
- 写一个能运行的 Hello World 程序
- 知道
go run、go build、go install的区别 - 看懂
package、import、func main的含义 - 用
go fmt格式化代码
下一节我们来系统了解 go 命令行的各种用法。