1. Go语言基础回顾:Go语言简介、环境搭建、GOPATH与Go Modules、第一个Go程序
1.1 Go语言简介
Go(又称Golang)是Google于2009年发布的开源编程语言,由Robert Griesemer、Rob Pike和Ken Thompson设计。Go专为构建高效、可靠的软件而生,尤其适合云原生、微服务、网络编程和DevOps工具链。
| 特性 | 说明 |
|---|---|
| 静态类型 + 编译型 | 编译为单一二进制,无运行时依赖,部署极简 |
| 并发原语 | goroutine(轻量线程) + channel(通信机制) |
| 内置垃圾回收 | 自动内存管理,降低内存泄漏风险 |
| 标准库丰富 | net/http、json、io、testing等开箱即用 |
| 跨平台 | Windows / Linux / macOS / ARM 全支持 |
| 工具链完善 | go fmt、go vet、go test、go mod 等 |
课程定位提示:本课程所有压测目标(Gin Web服务)均使用Go编写,掌握Go基础是后续契约测试与性能压测的基石。
1.2 环境搭建
Go环境搭建分为三步:下载安装、配置环境变量、验证安装。
1.2.1 下载与安装
- 访问 go.dev/dl 下载对应操作系统的安装包
- Windows:运行MSI安装包,默认路径
C:\Go - macOS:使用Homebrew
brew install go或pkg安装包 - Linux:下载tar.gz并解压至
/usr/local/go
1.2.2 环境变量配置
需要配置 GOROOT 和 PATH,推荐同时设置 GOPATH 和 GOBIN:
# Linux / macOS (~/.bashrc 或 ~/.zshrc)
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin:$GOBIN
# Windows (系统环境变量)
GOROOT = C:\Go
GOPATH = %USERPROFILE%\go
GOBIN = %GOPATH%\bin
PATH = %PATH%;%GOROOT%\bin;%GOBIN%
1.2.3 验证安装
go version
# 输出示例:go version go1.22.2 linux/amd64
go env GOPATH
# 输出示例:/home/user/go
常见踩坑:GOPATH不要与GOROOT设置为同一目录;Windows用户安装后务必重启终端或手动刷新环境变量。
1.3 GOPATH 与 Go Modules
Go的依赖管理经历了两个时代:GOPATH模式(Go 1.11之前)和 Go Modules(Go 1.11+,1.16起默认启用)。
| 对比维度 | GOPATH模式 | Go Modules |
|---|---|---|
| 项目位置 | 必须放在 $GOPATH/src 下 |
任意目录均可 |
| 依赖版本 | 无版本概念(所有依赖拉取到src) | 支持语义化版本控制 |
| 依赖文件 | 无显式清单 | go.mod + go.sum |
| 可重复构建 | 不保证 | 通过go.sum校验和保证 |
| 推荐度 | 已废弃 | 官方推荐,生产必用 |
1.3.1 Go Modules 核心命令
go mod init <module-name> # 初始化模块,生成go.mod
go mod tidy # 整理依赖,添加缺失/移除无用
go mod download # 下载所有依赖到本地缓存
go mod vendor # 将依赖复制到vendor目录
go list -m all # 列出所有直接和间接依赖
课程约定:本课程所有项目均使用Go Modules管理依赖,模块名统一为
github.com/<你的用户名>/<项目名>。
1.4 第一个Go程序
以经典的"Hello, Web"为例,演示从项目初始化到运行的全流程。
1.4.1 创建项目并初始化模块
mkdir hello-web
cd hello-web
go mod init hello-web
1.4.2 编写主程序
创建 main.go 文件:
package main
import "fmt"
func main() {
fmt.Println("Hello, Web 压测世界!")
}
1.4.3 编译与运行
# 直接运行
go run main.go
# 输出:Hello, Web 压测世界!
# 编译为二进制
go build -o hello-web main.go
./hello-web
# 输出:Hello, Web 压测世界!
关键理解:
go run 用于开发调试,go build 生成生产部署用的独立二进制文件。本课程后续的Gin服务均使用 go build 构建后部署压测。
1.4.4 程序结构说明
| 元素 | 作用 |
|---|---|
package main |
声明可执行程序的包名,必须为main |
import "fmt" |
导入标准库fmt,用于格式化输出 |
func main() |
程序入口函数,无参数无返回值 |
go.mod |
模块定义文件,记录模块路径和Go版本 |
1.5 本章小结
- Go语言以简洁、并发、高性能著称,是Web压测场景的理想实现语言
- 环境搭建需正确配置
GOROOT、GOPATH、GOBIN和PATH - Go Modules 是当前唯一推荐的依赖管理方式,使用
go.mod+go.sum保证可重复构建 - 第一个Go程序验证了从源码到二进制再到运行的全流程,为后续Gin Web服务开发奠定基础