go-zero环境搭建
关键词 :go-zero, WSL, Go 语言, 微服务框架, 环境搭建

📊 前言
以下是go-zero环境搭建的整体流程图,展示了从WSL准备到项目创建的完整步骤:
实验环境: win11 + WSL
WSL环境准备

go环境安装
请在你的 WSL 终端中手动执行以下命令:
下载 Go 1.26.5
curl -L https://go.dev/dl/go1.26.5.linux-amd64.tar.gz -o /tmp/go1.26.5.linux-amd64.tar.gz
解压到用户目录
rm -rf ~/go
tar -C ~ -xzf /tmp/go1.26.5.linux-amd64.tar.gz
添加到 PATH
echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证安装
go version

goctl安装
在WSL中,执行:
go install github.com/zeromicro/go-zero/tools/goctl@latest
export PATH=$PATH:$HOME/go/bin
查看效果:
root@DESKTOP-TKVSD8M:~# goctl --version
goctl version 1.10.1 linux/amd64
安装protoc
步骤1:
shell
PB_VERSION=25.1
curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v${PB_VERSION}/protoc-${PB_VERSION}-linux-x86_64.zip
unzip protoc-${PB_VERSION}-linux-x86_64.zip -d $HOME/.local
export PATH="$PATH:$HOME/.local/bin"
source ~/.bashrc
安装 Go 插件:
shell
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
一键检查并补全(推荐)
goctl env check --install --verbose --force

安装成功,但是有个警告,意思是 gopath应该不和go在一个目录。可以执行下面的命令区分开GOROOT(/go)和GOPATH(/gopath)了。
shell
mkdir -p ~/gopath
echo 'export GOPATH=$HOME/gopath' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc
执行后验证:
shell
go env GOPATH
出现下图代表成功:

~/gopath 刚创建时是空的。
GOPATH 是 Go 的工作空间,Go 会在需要时自动创建以下子目录:
~/gopath/
├── bin/ # 编译后的可执行文件(如 go install 安装的工具)
├── pkg/ # 编译后的包文件(缓存)
└── src/ # 你的 Go 项目源代码
你不需要手动创建这些目录,Go 会在使用时自动生成。
验证
root@DESKTOP-TKVSD8M:~/go-zero-learn/myservice# protoc --version
libprotoc 25.1
root@DESKTOP-TKVSD8M:~/go-zero-learn/myservice# protoc-gen-go --versionprotoc-gen-go v1.36.11
创建项目
生成流程
定义接口: 编写 .api 或 .proto 文件
生成骨架代码:
-
API 服务:
goctl api go -api hello.api -dir . -
RPC 服务:
goctl rpc protoc user.proto --go_out=. --go-grpc_out=. --zrpc_out=. -
填充逻辑:
在 internal/logic/ 中实现业务代码
举例
goctl api new myservice
cd myservice && go mod tidy
goctl rpc new myservicecd myservice && go mod tidy
出现的问题
go mod tidy报错解决方案:
root@DESKTOP-TKVSD8M:~/go-zero-learn/myservice#
● 网络仍然超时。尝试多个代理作为备选:
go env -w GOPROXY=https://goproxy.io,https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct
go env -w GOSUMDB=off
然后重试:
go mod tidy
工具介绍
热加载配置
安装命令
go
go install github.com/air-verse/air@latest
验证安装:
root@DESKTOP-TKVSD8M:~/go-zero-learn/go-rpc-demo/grpc-client#
air -v
/ /\ | | | |)
/ /--\ || || _ v1.65.1, built with Go go1.26.5

在目标项目中直接输入: air
效果:

这里也不用输入: go run 命令了,air就等于热启动了。

🔄 热加载工作流程
air工具实现了代码修改后的自动重载,下图展示了其工作流程:
服务器进程 Go编译器 air工具 开发者 服务器进程 Go编译器 air工具 开发者 #mermaid-svg-4damSU5eoXBSh8tb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-4damSU5eoXBSh8tb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-4damSU5eoXBSh8tb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-4damSU5eoXBSh8tb .error-icon{fill:#552222;}#mermaid-svg-4damSU5eoXBSh8tb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4damSU5eoXBSh8tb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-4damSU5eoXBSh8tb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4damSU5eoXBSh8tb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4damSU5eoXBSh8tb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-4damSU5eoXBSh8tb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4damSU5eoXBSh8tb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4damSU5eoXBSh8tb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4damSU5eoXBSh8tb .marker.cross{stroke:#333333;}#mermaid-svg-4damSU5eoXBSh8tb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4damSU5eoXBSh8tb p{margin:0;}#mermaid-svg-4damSU5eoXBSh8tb .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-4damSU5eoXBSh8tb text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-4damSU5eoXBSh8tb .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-4damSU5eoXBSh8tb .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-4damSU5eoXBSh8tb .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-4damSU5eoXBSh8tb .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-4damSU5eoXBSh8tb #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-4damSU5eoXBSh8tb .sequenceNumber{fill:white;}#mermaid-svg-4damSU5eoXBSh8tb #sequencenumber{fill:#333;}#mermaid-svg-4damSU5eoXBSh8tb #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-4damSU5eoXBSh8tb .messageText{fill:#333;stroke:none;}#mermaid-svg-4damSU5eoXBSh8tb .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-4damSU5eoXBSh8tb .labelText,#mermaid-svg-4damSU5eoXBSh8tb .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-4damSU5eoXBSh8tb .loopText,#mermaid-svg-4damSU5eoXBSh8tb .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-4damSU5eoXBSh8tb .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-4damSU5eoXBSh8tb .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-4damSU5eoXBSh8tb .noteText,#mermaid-svg-4damSU5eoXBSh8tb .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-4damSU5eoXBSh8tb .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-4damSU5eoXBSh8tb .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-4damSU5eoXBSh8tb .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-4damSU5eoXBSh8tb .actorPopupMenu{position:absolute;}#mermaid-svg-4damSU5eoXBSh8tb .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-4damSU5eoXBSh8tb .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-4damSU5eoXBSh8tb .actor-man circle,#mermaid-svg-4damSU5eoXBSh8tb line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-4damSU5eoXBSh8tb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} alt 编译成功 编译失败 loop 持续监控 开发过程中无需手动重启 在项目目录执行 `air` 监控文件变化(.go, .toml等) 检测到文件修改 触发Go重新编译 编译项目代码 返回编译结果 停止旧进程 启动新进程 显示重启成功信息 显示错误信息 继续监控文件
总结:
- 本文详细介绍了在 Windows 11 的 WSL 环境中搭建 go-zero 微服务框架开发环境的完整流程。
- 从 WSL 环境准备开始,逐步讲解 Go 语言环境安装、goctl 命令行工具配置、protoc 编译器及其 Go 插件安装,
- 到使用 goctl 创建 API 和 RPC 项目,并提供了常见网络问题的解决方案。
- 最后还介绍了 air 热加载工具的安装与使用,帮助开发者实现代码修改后的实时重载。
通过本文的步骤,读者可以快速搭建起完整的 go-zero 开发环境,为后续微服务开发打下坚实基础。
本文完