Appearance
第 3 章:第一个 Go 程序详解
3.1 Go 程序的基本结构
一个基本的 Go 程序由以下几个部分组成:
1. 包声明
go
package mainpackage关键字用于声明包名main包是特殊的包,表示这是一个可执行程序- 每个 Go 文件都必须属于一个包
2. 导入包
go
import "fmt"import关键字用于导入其他包fmt包是标准库中的格式化输入输出包- 可以导入多个包,使用括号包围:go
import ( "fmt" "math" )
3. 主函数
go
func main() {
fmt.Println("Hello, Go!")
}func关键字用于声明函数main函数是程序的入口点- 主函数没有参数和返回值
- 函数体由花括号
{}包围
3.2 编译与运行 Go 程序的两种方式
方式 1:直接运行
使用 go run 命令直接运行 Go 程序,无需编译成可执行文件:
bash
go run main.go- 适合开发调试阶段
- 每次运行都会重新编译
方式 2:编译后运行
使用
go build命令编译 Go 程序:bashgo build main.go运行生成的可执行文件:
- Windows:
main.exe - Mac/Linux:
./main
- Windows:
- 适合生产环境部署
- 编译一次,多次运行
3.3 Go 命令速查
常用 Go 命令
| 命令 | 功能 | 示例 |
|---|---|---|
go run | 直接运行 Go 程序 | go run main.go |
go build | 编译 Go 程序 | go build main.go |
go fmt | 格式化 Go 代码 | go fmt main.go |
go test | 运行测试 | go test ./... |
go get | 下载依赖包 | go get github.com/gin-gonic/gin |
go mod | 管理依赖 | go mod init project |
go version | 查看 Go 版本 | go version |
go env | 查看 Go 环境变量 | go env |
3.4 新手常见错误
1. 大小写问题
Go 语言中,标识符的大小写决定了其可见性:
- 大写字母开头:公开的,可以被其他包访问
- 小写字母开头:私有的,只能在当前包内访问
错误示例:
go
package main
import "fmt"
func main() {
fmt.println("Hello, Go!") // 错误:println 应该是 Println
}2. 分号问题
Go 语言会自动添加分号,不需要手动添加:
错误示例:
go
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!"); // 错误:不需要分号
}3. 包名问题
- 可执行程序的包名必须是
main - 库文件的包名通常与目录名相同
错误示例:
go
package myapp // 错误:可执行程序必须使用 main 包
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}4. 导入未使用的包
Go 语言不允许导入未使用的包:
错误示例:
go
package main
import (
"fmt"
"math" // 错误:导入了未使用的包
)
func main() {
fmt.Println("Hello, Go!")
}5. 变量声明未使用
Go 语言不允许声明未使用的变量:
错误示例:
go
package main
import "fmt"
func main() {
var name string // 错误:声明了未使用的变量
fmt.Println("Hello, Go!")
}6. 函数参数和返回值
- 函数参数需要指定类型
- 函数返回值需要指定类型
错误示例:
go
package main
import "fmt"
func add(a, b) int { // 错误:参数需要指定类型
return a + b
}
func main() {
fmt.Println(add(1, 2))
}7. 括号位置
Go 语言的括号位置有严格要求:
错误示例:
go
package main
import "fmt"
func main() // 错误:左括号必须与函数名在同一行
{
fmt.Println("Hello, Go!")
}3.5 代码风格建议
- 缩进:使用 4 个空格进行缩进
- 命名:使用驼峰命名法
- 注释:使用
//进行单行注释,/* */进行多行注释 - 空行:在函数之间、逻辑块之间使用空行
- 长度:每行代码长度不超过 80 个字符
使用 go fmt 命令可以自动格式化代码,保持一致的代码风格。
