Im trying to create *dynamicpb.Message the following way
import (
"github.com/stretchr/testify/assert"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/types/descriptorpb"
"google.golang.org/protobuf/types/dynamicpb"
"testing"
)
func getDescriptorProto(fieldName string) protoreflect.MessageDescriptor {
descProto := descriptorpb.DescriptorProto{
Field: []*descriptorpb.FieldDescriptorProto{
{
Name: proto.String(fieldName),
Type: descriptorpb.FieldDescriptorProto_TYPE_INT32.Enum(),
},
},
}
return descProto.ProtoReflect().Descriptor()
}
func getDynamicMessage(descriptor protoreflect.MessageDescriptor, value int32) *dynamicpb.Message {
dynamicMessage := dynamicpb.NewMessage(descriptor)
dynamicMessage.Set(dynamicMessage.Descriptor().Fields().ByName("id"), protoreflect.ValueOf(value))
return dynamicMessage
}
var (
idDescriptorProto = getDescriptorProto("id")
)
var (
validIdMessage = getDynamicMessage(idDescriptorProto, int32(2))
)
Im getting invalid memory address or nil pointer dereference most likely because descProto.ProtoReflect().Descriptor() is not working properly.
Does anyone see what Im missing out?
I tried debugging the function and saw that from some reason my message info is nil.