首页 / Go 语言入门教程 / 第一个 Go 程序

Go 语言入门教程

第一个 Go 程序

本教程共 80 篇 · 第 3 篇 · 更新于 2026-07-27 · 约 7 分钟阅读

GoGo 入门教程Hello Worldgo rungo buildgo installGo 程序结构

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
Note

Go 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 installgo 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 rungo buildgo install 的区别
  • 看懂 packageimportfunc main 的含义
  • go fmt 格式化代码

下一节我们来系统了解 go 命令行的各种用法。