记录protoc生成代码将optional改成omitepty问题

问题现状

在修改go项目的protoc文件,然后用protoc命令生成go代码的时候,会遇到将optional修改成omitempty的情况

问题产生的原因

是因为我的protoc版本是v4.25.1,而之前的版本是v4.22.1

产生的结果

这样修改会导致接口给前端返回的数组类型变成了null,而不是空数组。如果前端代码不严谨的话,就导致报错了。

解决过程

先是询问大模型,提供了很多方法,但都行不通。下面介绍一下行不通的方案。

  • 重新安装protoc v4.22.1版本。但是的网上找了很多资料,发现只能下载源代码,需要自己编译。不能直接下载可执行文件。
  • 用docker,在docker中安装protoc v4.22.1 生成代码
  • 其他

最终,采用最简单的方式,即将修改的omitempty改回optional

bash 复制代码
# 1. 备份文件
cp pb/code_review.api.v1.pb.go pb/code_review.api.v1.pb.go.bak

# 2. 使用简单的 sed 命令
sed -i.bak 's/omitempty/optional/g' pb/code_review.api.v1.pb.go

# 3. 验证
grep "optional" pb/code_review.api.v1.pb.go | head -3

这个方法最终生效了!!!

相关推荐
candyTong3 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
GetcharZp4 小时前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端
审判长烧鸡6 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
zhangxingchao6 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
IT_陈寒6 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端
ServBay6 小时前
OpenCode 和它的7款必备插件
后端·github·ai编程
ping某6 小时前
逐字节拆解 tcpdump
后端
阿凡9807306 小时前
花 100 dollar,用 Claude 打通 EasyEDA&Fusion 双向同步
后端·程序员
irving同学462386 小时前
从零搭建生产级 RAG:Embedding、Chunking、Hybrid Search 与 Reranker
前端·后端
她的男孩6 小时前
从零搭一个企业后台,为什么我把能力拆成 Starter 和 Plugin
java·后端·架构