【web3基础】go-zero环境搭建(一)

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 --version

protoc-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 myservice

cd 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 开发环境,为后续微服务开发打下坚实基础。


本文完

相关推荐
闲猫10 小时前
LangChain / Core components / Models
开发语言·python·langchain
神奇小汤圆11 小时前
SpringBoot 相关的 Skills 全景指南
后端
神奇小汤圆11 小时前
高性能进程内队列 BufferQueue 1.0 版本发布
后端
爸爸61911 小时前
空数据状态与引导:多维度 UI 提示设计
后端
-银雾鸢尾-12 小时前
C#中的索引器
开发语言·c#
Qlittleboy12 小时前
PHP的接口参数传递的过多,max_input_vars = 5000
开发语言·php
Reart12 小时前
Leetcode 674.最长连续递增序列 (719)
后端·算法
Aurorar0rua12 小时前
CS50 x 2024 Notes Algorithms - 02
c语言·开发语言·学习方法
芒鸽12 小时前
HarmonyOS ArkUI Search 搜索框:联想词、历史记录与热门标签
后端
en.en..12 小时前
冒泡排序与选择排序完整对比解析
开发语言·数据结构·算法·c#·排序算法