如何在protobuf中使用EnumValueOptions

时间:2019-05-17 23:51:21

标签: go protocol-buffers

我正在尝试使用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)
}

0 个答案:

没有答案