为了账号安全,请及时绑定邮箱和手机立即绑定

如何检索字段选项值

如何检索字段选项值

Go
芜湖不芜 2022-10-04 16:35:04
我有原型: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
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

从 中,使用选项() 方法。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

    })


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 56 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信