Я пытаюсь использовать функцию пользовательских опций в protobuf.Я не уверен, неправильно ли я создаю пользовательский параметр или пытаюсь получить его неверно.
Вот мое прототипное определение:
syntax = "proto3";
import "google/protobuf/descriptor.proto";
package common;
message Foo {
EventType event_type = 1;
}
enum AuditEventType {
AuditEventDefault = 0;
AuditEventError = 1;
AuditEventInfo = 2;
}
enum EventType {
Undefined = 0;
AuditSourceType.Pearl)]
Lead = 1 [(audit_event_type) = AuditEventInfo];
}
extend google.protobuf.EnumValueOptions {
AuditEventType audit_event_type = 50000;
}
Так что в моемкод, как бы я получить audit_event_type
из поля event_type
на Foo
?
Я вижу такие примеры:
func TestExtension(t *testing.T) {
foo := &Foo{
EventType: EventType_Lead,
}
_, md := descriptor.ForMessage(foo)
auditEvent, err := proto.GetExtension(md.Options, E_AuditEventType)
if err != nil {
t.Error("error:", err)
}
t.Log(auditEvent)
}
Но я получаю ошибку:
error: proto: nil *descriptor.MessageOptions is not extendable