Hello World #
一、第一个Go程序 #
1.1 创建项目目录 #
bash
mkdir hello
cd hello
1.2 初始化模块 #
bash
go mod init hello
这会创建go.mod文件:
text
module hello
go 1.22
1.3 编写代码 #
创建main.go文件:
go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
1.4 运行程序 #
bash
go run main.go
输出:
text
Hello, World!
二、程序结构解析 #
2.1 包声明 #
go
package main
- 每个Go文件必须声明所属包
main包表示这是一个可执行程序- 可执行程序必须包含
main函数
2.2 导入包 #
go
import "fmt"
fmt是Go标准库中的格式化I/O包- 使用
import关键字导入 - 导入的包必须使用,否则编译报错
多包导入方式:
go
import (
"fmt"
"os"
"strings"
)
2.3 main函数 #
go
func main() {
fmt.Println("Hello, World!")
}
main函数是程序入口- 无参数、无返回值
- 程序从这里开始执行
2.4 语句 #
go
fmt.Println("Hello, World!")
- 调用
fmt包的Println函数 - Go语句不需要分号结尾
Println自动换行
三、编译与运行 #
3.1 go run #
直接编译运行:
bash
go run main.go
适合开发调试,不会生成可执行文件。
3.2 go build #
编译生成可执行文件:
bash
go build
或指定输出文件名:
bash
go build -o hello main.go
运行可执行文件:
bash
./hello
3.3 go install #
编译并安装到$GOPATH/bin:
bash
go install
之后可直接运行:
bash
hello
3.4 跨平台编译 #
编译Linux版本:
bash
GOOS=linux GOARCH=amd64 go build
编译Windows版本:
bash
GOOS=windows GOARCH=amd64 go build
常用GOOS/GOARCH组合:
| 目标系统 | GOOS | GOARCH |
|---|---|---|
| Linux 64位 | linux | amd64 |
| Windows 64位 | windows | amd64 |
| macOS Intel | darwin | amd64 |
| macOS M1/M2 | darwin | arm64 |
四、代码格式化 #
4.1 gofmt #
Go内置格式化工具:
bash
gofmt -w main.go
-w:直接修改文件- 统一代码风格,消除争议
4.2 go fmt #
简化命令:
bash
go fmt main.go
五、代码规范 #
5.1 命名规范 #
- 包名:小写,单个单词(如
fmt、http) - 变量/函数:驼峰命名(如
userName、getInfo) - 导出标识符:首字母大写(如
Println) - 私有标识符:首字母小写(如
print)
5.2 注释 #
单行注释:
go
fmt.Println("Hello") // 打印Hello
多行注释:
go
/*
这是一个多行注释
可以跨越多行
*/
文档注释:
go
func Add(a, b int) int {
return a + b
}
5.3 大括号风格 #
左大括号不能单独一行:
go
func main() { // 正确
fmt.Println("Hello")
}
func main()
{ // 错误!编译失败
fmt.Println("Hello")
}
六、扩展示例 #
6.1 命令行参数 #
go
package main
import (
"fmt"
"os"
)
func main() {
if len(os.Args) > 1 {
fmt.Printf("Hello, %s!\n", os.Args[1])
} else {
fmt.Println("Hello, World!")
}
}
运行:
bash
go run main.go Go
输出:
text
Hello, Go!
6.2 用户输入 #
go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
fmt.Print("请输入你的名字: ")
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
name := scanner.Text()
fmt.Printf("Hello, %s!\n", name)
}
6.3 多文件项目 #
项目结构:
text
myapp/
├── go.mod
├── main.go
└── utils/
└── helper.go
utils/helper.go:
go
package utils
func Greet(name string) string {
return "Hello, " + name + "!"
}
main.go:
go
package main
import (
"fmt"
"myapp/utils"
)
func main() {
message := utils.Greet("Go")
fmt.Println(message)
}
七、开发流程 #
7.1 标准流程 #
- 创建项目目录
- 初始化模块:
go mod init - 编写代码
- 运行测试:
go run - 格式化:
go fmt - 编译构建:
go build
7.2 常用开发命令 #
bash
go run . # 运行当前目录所有Go文件
go build . # 编译当前目录
go test ./... # 运行所有测试
go vet ./... # 静态分析
go fmt ./... # 格式化所有文件
八、常见错误 #
8.1 未使用的变量 #
go
func main() {
x := 10 // 错误:x declared but not used
}
解决:使用或删除变量
8.2 未使用的导入 #
go
import "fmt" // 错误:imported and not used
解决:使用或删除导入
8.3 语法错误 #
go
fmt.Println("Hello" // 错误:missing ) at end of file
解决:检查括号匹配
九、总结 #
第一个Go程序的关键点:
- 包声明:
package main - 导入包:
import "fmt" - 入口函数:
func main() - 运行方式:
go run或go build
Go程序的特点:
- 结构简单清晰
- 强制代码规范
- 编译速度快
- 部署方便
准备好学习Go的基础语法了吗?让我们进入下一章!
最后更新:2026-03-26