go - 如何从 protobuf 文件生成字符串切片的映射?
问题描述
正如协议缓冲区文档所述:
每个映射字段在类型结构中生成一个字段,
map[TKey]TValue
其中TKey
字段的键类型TValue
是字段的值类型...
我想设置TValue
为一段字符串。所以在 Go 中它会生成:
map[string][]string
还考虑到关于重复字段的注释:
同样,对于字段定义
repeated bytes foo = 1;
,编译器将生成一个 Go 结构体,其中包含一个[][]byte
名为Foo
我正在尝试执行以下操作:
message CallBackUrl {
string base_url = 1;
map<string, repeated string> params = 2;
}
但这只是吐出一个错误:
pb/authenticator.proto:57:26: Expected ">"
我可以这样做:
message StringSlice {
repeated string slice = 1;
}
message CallBackUrl {
map<string, StringSlice> params = 1;
}
输出:
type StringSlice struct {
Slice []string
}
type CallBackUrl struct {
Params map[string]*StringSlice
}
但是,在实现Params
中将需要用作一个url.Values
来构建查询字符串。最后一个解决方案需要额外的迭代,并将数据复制到一个 newmap[string][]string
中,我想避免这种情况。
(如何)我可以让协议缓冲区生成字符串切片的(Go)映射吗?我正在使用 gRPC 插件。
解决方案
推荐阅读
- vuetify.js - Vuetify 表格标题中的换行符
- keycloak - 访问令牌身份验证在 Nginx 反向代理中不起作用
- javascript - 获取来源时使用 Expo Stripe Payments 时取消重定向
- excel - 从另一个文件复制值
- laravel - Laravel + Inertia + Vuejs:分页
- swift - 迅速。收到 Apple 授权后如何申请成为默认浏览器的权限?
- javascript - 如何在 JavaScript 中将字符串转换为 JSON 对象?
- javascript - 同步函数中的 async/await - JavaScript
- react-native - React Native PanResponder onStartShouldSetPanResponder locationX 因平台而异
- java - performLongClick 在活动 android 中不起作用