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/<你的用户名>/<项目名>。
Go依赖管理演进与Modules工作流 GOPATH 模式(旧) 项目必须在 $GOPATH/src 下 无版本控制,依赖混乱 演进 Go Modules(新) 任意目录,go.mod 声明模块 语义版本 + go.sum 校验 go mod init go mod tidy go mod download go build / go test 使用 Go Modules 是生产环境唯一推荐的依赖管理方式 go.mod 记录模块路径和依赖版本,go.sum 保证下载完整性

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版本
第一个Go程序:从源码到运行 main.go 源码 package main + func main() go build 编译阶段 语法检查 + 类型检查 + 链接 hello-web 二进制 独立可执行文件 运行 go.mod 和 go.sum 伴随整个生命周期 go.mod 声明依赖,go.sum 保证依赖完整性,go build 自动读取 快捷方式:go run main.go = 编译 + 运行一步完成(适合开发调试)

1.5 本章小结

  • Go语言以简洁、并发、高性能著称,是Web压测场景的理想实现语言
  • 环境搭建需正确配置 GOROOT、GOPATH、GOBIN 和 PATH
  • Go Modules 是当前唯一推荐的依赖管理方式,使用 go.mod + go.sum 保证可重复构建
  • 第一个Go程序验证了从源码到二进制再到运行的全流程,为后续Gin Web服务开发奠定基础