【web3基础】go-zero创建rpc服务,创建配置文件(二)
go-zero本文一览图创建rpc项目创建命令:加载依赖包运行demo配置文件解析原理了解总结关键词: go-zero, goctl, RPC, 配置文件, YAML, 配置解析, 微服务, 项目创建, 依赖管理, 配置加载本文一览图下面是实际操作:创建rpc项目创建命令:goctl rpcnewrpcdemo运行项目:加载依赖包rootDESKTOP-TKVSD8M:~/go-zero-learn# cd rpcdemo/rootDESKTOP-TKVSD8M:~/go-zero-learn/rpcdemo#gomod tidy运行demorootDESKTOP-TKVSD8M:~/go-zero-learn/rpcdemo#gorun rpcdemo.go卡卡报错原因没有配置etcd因为还没讲到那块所以先注释掉跑通项目。2处改动1:etc下的yamllogic返回先写死配置文件解析原理了解新建个服务项目goctl apinewconfigdemo cd configdemogomod tidy新增个配置文件config.yaml 内容如下:Name:demo Host:127.0.0.1Port:6370新增解析方法main.go 内容如下:packagemainimport(flagfmtgithub.com/zeromicro/go-zero/core/conf)typeConfigstruct{NamestringHoststringjson:,default0.0.0.0Portint}varfflag.String(f,config.yaml,the config file)funcmain(){flag.Parse()varc Config conf.MustLoad(*f,c)fmt.Println(c.Name)}运行:rootDESKTOP-TKVSD8M:~/go-zero-learn/configdemo#gorun main.godemo改下name:Name:config demo Host:127.0.0.1Port:6370再次运行:rootDESKTOP-TKVSD8M:~/go-zero-learn/configdemo#gorun main.goconfig demo本质上的原理都一样都是解析config只不过 入口文件的配置文件默认放在etc中的。// Code scaffolded by goctl. Safe to edit.// goctl 1.10.1packagemainimport(flagfmtconfigdemo/internal/configconfigdemo/internal/handlerconfigdemo/internal/svcgithub.com/zeromicro/go-zero/core/confgithub.com/zeromicro/go-zero/rest)varconfigFileflag.String(f,etc/configdemo-api.yaml,the config file)funcmain(){flag.Parse()varc config.Config conf.MustLoad(*configFile,c)server:rest.MustNewServer(c.RestConf)deferserver.Stop()ctx:svc.NewServiceContext(c)handler.RegisterHandlers(server,ctx)fmt.Printf(Starting server at %s:%d...\n,c.Host,c.Port)server.Start()}本质:go-zero 配置加载本质是利用 YAML 反序列化机制将配置文件内容映射到 Go struct实现配置和代码解耦。总结本文通过两个完整示例演示了 go-zero 微服务框架的核心使用流程RPC 项目创建与运行使用goctl rpc new命令创建 RPC 服务通过go mod tidy加载依赖运行过程中遇到 etcd 配置问题并提供了临时解决方案。配置文件解析机制创建 API 服务项目展示如何定义和解析 YAML 配置文件通过conf.MustLoad将配置映射到 Go 结构体并验证配置加载效果。文章最后揭示了 go-zero 配置加载的本质利用 YAML 反序列化机制将配置文件内容映射到 Go struct实现配置和代码解耦。这两个示例涵盖了从项目创建、依赖管理、配置解析到服务运行的全流程为初学者提供了完整的实践参考。

相关新闻

Flutter ListView核心原理与性能优化实践

Flutter ListView核心原理与性能优化实践

1. ListView核心概念解析ListView是移动应用开发中最基础也最常用的滚动列表组件,它能够线性排列子组件并支持垂直或水平方向的滚动。在Flutter框架中,ListView属于widgets库的一部分,作为ScrollView的子类,专门用于处理大量数据的…

2026/11/2 3:26:58 阅读更多 →
Nemotron-3-Embed-8B文本嵌入模型实战:从环境配置到生产部署

Nemotron-3-Embed-8B文本嵌入模型实战:从环境配置到生产部署

在自然语言处理的实际项目中,文本嵌入模型的选择往往决定了语义搜索、问答系统和内容推荐的最终效果。NVIDIA 最新发布的 Nemotron-3-Embed-8B 模型在 RTEB 基准测试中登顶,为开发者提供了一个新的高性能选项。这个拥有 80 亿参数的嵌入模型不仅支持 819…

2026/11/1 18:44:55 阅读更多 →
图片转AI提示词工具本地部署指南:从原理到实践

图片转AI提示词工具本地部署指南:从原理到实践

图片转AI提示词工具是AI图像生成领域的重要辅助工具,它能将任意图片转换为详细的文本描述,这些描述可以直接用于Stable Diffusion、Midjourney、Flux等主流AI图像生成模型。对于经常使用AI绘画的创作者来说,手动编写高质量的提示词是个技术活…

2026/10/28 4:31:36 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/1 10:36:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/1 10:36:51 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/1 10:35:11 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/1 9:35:41 阅读更多 →

日新闻

周新闻

月新闻