我正在使用grpc golang在客户端和服务器应用程序之间进行通信。
以下是协议缓冲区的代码。

我需要在消息数据结构内而不是map [string] string创建一个类型为map [string] interface {}的字段inputVar。
我该如何实现?
预先感谢。


proto3的类型为Any

但是如果您看一下它的实现,它就是

您必须自己定义可能的消息,方法是使用反射和中间类型。

请参阅示例应用程序

https://github.com/golang/protobuf/issues/60


我写了一篇较长的文章,介绍如何使用google.protobuf.Struct处理任意JSON输入。 structpb软件包能够通过AsMap()函数从structpb.Struct产生map[string]interface{}

官方文档:https://pkg.go.dev/google.golang.org/protobuf/types/known/structpb


虽然处理起来有些冗长,但协议缓冲区中的" struct"类型可能更接近golang的map [string] interface {}

但是像interface {}一样,将花费一些反射样式的开销来确定实际的存储类型是什么。

例如在此处查看评论:https://github.com/golang/protobuf/issues/370