如何检索字段选项值

我有原型:


extend google.protobuf.FieldOptions {

  string foo_option = 50000;

}



message Request {

  // all fields have foo_option

  string str1 = 1 [(foo_option) = "bar1"];

  string str2 = 1 [(foo_option) = "bar2"];

}

在 Go 中,给定 ,我如何检索每个字段的值?req *Requestfoo_option


芜湖不芜
浏览 70回答 1
1回答

函数式编程

从 中,使用选项() 方法。protoreflect.FieldDescriptor您将需要一些类型断言来检索实际的选项值。完整的代码段可能如下所示:// imports// "google.golang.org/protobuf/proto"// "google.golang.org/protobuf/reflect/protoreflect"// "google.golang.org/protobuf/types/descriptorpb"    p := msg.ProtoReflect()    p.Range(func(fd protoreflect.FieldDescriptor, value protoreflect.Value) bool {        opts := fd.Options().(*descriptorpb.FieldOptions)        s, _ := proto.GetExtension(opts, mypbpkg.E_FooOption)        fmt.Println(*s.(*string)) // bar1        return true    })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go