第一章:环境搭建与Hello World
1.1 Go语言简介
什么是Go语言?
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
设计目标:
简洁性:语法简单,易于学习
高效性:编译速度快,执行效率高
并发性:原生支持并发编程
可靠性:强类型系统,编译期错误检查
Go语言的特点:
Go语言的应用场景
云原生:Docker、Kubernetes都是用Go写的
后端服务:高性能API服务
微服务:轻量级服务架构
网络编程:高并发网络应用
DevOps工具:各种CLI工具
1.2 安装Go环境
下载安装
Windows:
下载 Windows 安装包 (.msi)
双击安装,按向导完成
macOS:
# 使用Homebrew安装
brew install go
# 或者下载pkg安装包Linux:
# 下载(以1.21版本为例,请替换为最新版本)
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
# 解压到/usr/local
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# 添加环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc验证安装
go version输出类似:
go version go1.21.5 linux/amd64配置GOPATH(Go 1.13+ 可选)
从Go 1.13开始,推荐使用Go Modules管理依赖,GOPATH不再是必须的。
但建议设置一个工作目录:
# 添加到 ~/.bashrc 或 ~/.zshrc
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin配置Go Modules
Go Modules是Go官方的依赖管理工具,从Go 1.11引入,1.16成为默认。
# 启用Go Modules(Go 1.16+默认已启用)
go env -w GO111MODULE=on
# 设置国内镜像(加速下载)
go env -w GOPROXY=https://goproxy.cn,direct
# 查看配置
go env1.3 第一个Go程序:Hello World
创建项目目录
# 创建工作目录
mkdir -p ~/go-projects/hello-world
cd ~/go-projects/hello-world
# 初始化Go模块
go mod init hello-world执行后生成 go.mod 文件:
module hello-world
go 1.21编写第一个程序
创建 main.go 文件:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}代码解析
package main // 声明包名,main包是可执行程序的入口
import "fmt" // 导入fmt包,用于格式化输入输出
func main() { // main函数是程序的入口点
fmt.Println("Hello, World!") // 调用fmt包的Println函数打印字符串
}关键点:
package main:每个可执行程序必须有且只有一个main包import:导入其他包使用func main():程序从这里开始执行fmt.Println():打印一行内容并换行
运行程序
# 直接运行
go run main.go
# 编译成可执行文件
go build -o hello main.go
# 运行可执行文件
./hello程序结构详解
项目目录/
├── go.mod # 模块定义文件
├── go.sum # 依赖校验文件(自动生成)
└── main.go # 主程序文件go.mod文件详解:
module hello-world # 模块名称,通常是代码仓库路径
go 1.21 # Go版本要求
require ( # 依赖列表
github.com/some/package v1.2.3
)1.4 Go命令行工具
常用命令
# 运行程序
go run main.go
go run .
# 编译程序
go build # 编译当前目录
go build -o app main.go # 指定输出文件名
go build -ldflags "-s -w" # 减小二进制体积
# 安装程序(编译并放到GOPATH/bin)
go install
# 格式化代码
go fmt ./...
# 检查代码
go vet ./...
# 运行测试
go test ./...
# 下载依赖
go mod download
# 整理依赖
go mod tidy
# 查看依赖
go mod graph
# 查看文档
go doc fmt.Println
go doc net/http
# 获取包
go get github.com/gin-gonic/gin
go get -u github.com/gin-gonic/gin # 更新到最新版交叉编译
Go支持在不同平台编译其他平台的可执行文件:
# Linux编译Windows可执行文件
GOOS=windows GOARCH=amd64 go build -o app.exe
# Windows编译Linux可执行文件(在PowerShell中)
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o app
# 常用GOOS/GOARCH组合
# linux/amd64, linux/arm64
# windows/amd64, windows/arm64
# darwin/amd64, darwin/arm64 (macOS)1.5 开发环境配置
推荐IDE/编辑器
VS Code + Go插件(免费,推荐初学者)
GoLand(JetBrains出品,功能强大,付费)
Vim/Neovim + vim-go(适合Vim用户)
VS Code配置
安装Go插件(由Go Team at Google提供)
安装工具:按
Ctrl+Shift+P,输入Go: Install/Update Tools,全选安装配置settings.json:
{
"go.formatTool": "gofumpt",
"go.lintTool": "golangci-lint",
"go.toolsManagement.autoUpdate": true
}1.6 练习
练习1:修改Hello World
修改程序,输出你的姓名和当前日期。
练习2:多文件程序
创建两个文件:main.go 和 greeting.go,在greeting.go中定义一个函数,在main.go中调用它。
练习3:交叉编译
尝试在本地编译一个其他平台的可执行文件。