Go 入门 01
安装 · Hello World · 模块
先把第一段 Go 程序稳定跑起来
3命令
1模块
main入口包
Chapter 01
先安装,再运行
Go 程序从工具链开始。工具链指一组围绕语言工作的命令和程序,包括编译、运行、测试、格式化和依赖管理。Go 官方教程建议初学者先安装 Go,再用终端创建目录、初始化模块、运行一段最小程序。
定义:Go 工具链
Go 工具链通常通过 go 命令入口使用。你会反复用到 go run 运行程序、go test 执行测试、go mod 管理模块、go fmt 格式化代码。
安装完成后,在终端执行下面的命令确认版本:
go version
如果能看到类似 go version go1.xx darwin/arm64、linux/amd64 或 windows/amd64 的输出,说明工具链已经可用。版本号不需要和示例完全一致;初学阶段只要使用较新的稳定版本即可。
Project
创建第一个模块
Go 代码不是散落的一堆文件,而是按目录、包和模块组织起来。包是一组位于同一目录、一起编译的源文件;模块是一组相关包的集合,用 go.mod 声明模块路径和依赖。
mkdir hello
cd hello
go mod init example/hello
go mod init 会生成 go.mod 文件。官方模块参考把模块定义为一起发布、版本化和分发的包集合;即使你暂时不发布代码,也应该从模块开始组织项目。
初学者选择:本地练习可以用
example/hello 这种模块路径。真正发布时,模块路径通常应该对应代码仓库地址,例如 github.com/you/project。Hello World
理解最小程序的每一行
在 hello 目录中创建 main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
然后运行:
go run .
这个程序只有三层含义:package main 表示这是一个可执行程序所在的包;import "fmt" 引入标准库中的格式化输入输出包;func main() 是程序默认执行的入口函数。
| 代码 | 作用 | 初学者应记住 |
|---|---|---|
package main | 声明当前文件属于 main 包 | 可执行程序必须有 main 包 |
import "fmt" | 导入格式化 I/O 标准库 | 打印、字符串格式化常用它 |
func main() | 程序入口 | 运行 main 包时默认调用 |
go run . | 编译并运行当前目录模块代码 | 练习阶段最常用 |
表 1:第一个 Go 程序中的基本结构。
Workflow
初学阶段的最小工作流
写 Go 的第一周,不必记住所有命令。先把下面四个命令形成肌肉记忆:
go run . # 运行当前程序
go fmt ./... # 格式化当前模块里的 Go 文件
go test ./... # 执行当前模块里的测试
go help # 查看 go 命令帮助
让工具替你保持一致
Effective Go 强调 Go 通过 gofmt 统一格式。初学者不需要争论缩进风格,提交前运行 go fmt ./... 即可。
复习速查
- 模块:由
go.mod标识的一组包和依赖。 - 包:同一目录下一起编译的 Go 源文件集合。
- 入口:可执行程序使用
package main和func main()。 - 命令:练习阶段先掌握
go run .、go fmt ./...、go test ./...。
参考来源
- The Go Authors. Tutorial: Get started with Go. go.dev/doc/tutorial/getting-started
- The Go Authors. How to Write Go Code. go.dev/doc/code
- The Go Authors. Go Modules Reference. go.dev/ref/mod
- The Go Authors. Effective Go. go.dev/doc/effective_go