百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
P

protoc-go-inject-tag

> 编程语言
开源

为 protobuf golang 结构体注入自定义标签

1.3K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

为 protobuf golang 结构体注入自定义标签

protoc-go-inject-tag 为什么? Golang protobuf 不支持自定义标签生成结构体。此工具会将自定义标签注入到生成的 protobuf 文件中,通常用于验证字段、从 JSON 数据中删除字段等。 安装 - protobuf 版本 3 对于 OS X: console brew install protobuf - go 支持 protobuf: go get -u GitHub.com/golang/protobuf/{proto,protoc-gen-go} - go install GitHub.com/favadi/protoc-go-inject-tag@latest 或从版本页面下载二进制文件。 使用 console $ protoc-go-inject-tag -h protoc-go-inject-tag 的使用: -XXXskip 字符串标签,应忽略未知字段(自 protoc-gen-go v1.4.0 以来已过时) -input 字符串模式,匹配输入文件 -verbose 详细日志 -removetagcomment 从生成的文件中删除标签注释 在字段前添加以下语法的注释,这些注释将被注入到生成的 .pb.go 文件中。 可以在字段前指定,也可以在字段后指定。 proto // @gotags: customtag:"customvalue" 示例 proto // file: test.proto syntax = "proto3"; package pb; option gopackage = "/pb"; message IP { // @gotags: valid:"ip" string Address = 1; // 或: string MAC = 2; // @gotags: validate:"omitempty" } 使用 protoc 命令正常生成您的 .pb.go 文件: console protoc --protopath=. --goout=paths=sourcerelative:. test.proto 然后使用 protoc-go-inject-tag 处理生成的文件(例如 test.pb.go): console $ protoc-go-inject-tag -input=./test.pb.go 或 $ protoc-go-inject-tag -input=".pb.go" 自定义标签将被注入到 test.pb.go 中: go 类型 IP 结构 { // @gotags: valid:"ip" Address string protobuf:"bytes,1,opt,name=Address,json=address" json:"Address,omitempty" valid:"ip" } 从生成输出中移除 gotag 注释 使用 -removetagcomment 标志,您可以删除生成代码上通常标注的 gotag 注释。这允许更加无缝地支持像 swag/openapi 生成器这样的库,这些库使用代码注释来生成 openapi 文件。 已过时的功能 跳过 XXX 字段 要跳过生成的 XXX 字段(未知字段)的标签,请使用 -XXXskip=yaml,xml 标志。这已过时,因为…

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言