我正在尝试使用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
的{{1}}字段中获得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)
}