
{ proto_path:"path1/path2", message_name: "message1", field_path:"field1.field2" } proto/ ├── path1/ │ ├── path2/ │ │ ├── proto1/ │ │ │ └── proto1.pb.go // proto1 和 proto2 在经过 protoc-gen-go 转译之前同属于 │ │ ├── proto2/ // 名称为 path2 的 proto package, message1 位于 proto1 中 │ │ │ └── proto2.pb.go │ ├── path4/ │ │ └── message3.proto │ └── utils.proto ├── path5/ │ └── message4.proto └── path6/ └── message5.proto 需要根据传入的参数来拿到对应 proto 下 message2 的值,由于 proto 比较大,无法维护路径与 message 的 go 结构体定义的映射,需要通过反射去动态取值。 对 go protobuf 反射不太熟,这个搞不太定,有无大神帮忙看看
1 qzzz 2025 年 1 月 17 日 |
3 SingeeKing PRO 用 path 是不是有点奇怪,正常做法应该是用 package 的,然后在 registry 查就行 --- 如果是一些特殊的服务无法保证 package 唯一,那么可能唯一的办法就是写个脚本来生成了 |
4 guanzhangzhang 2025 年 1 月 17 日 github.com/jhump/protoreflect 之前写的一个逆向生成 pb 文件,用了这个库实现的 |
5 horro OP @SingeeKing #3 对,前端传入的 path 其实就是与 pacakge 对应的 |