首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试元素是否为Any类型

如何测试元素是否为Any类型
EN

Stack Overflow用户
提问于 2020-12-29 05:46:46
回答 1查看 119关注 0票数 0

在Go中,我如何测试一个结构的元素是否属于Any (protobuf):*any.Any类型?我想要遍历结构的每个元素,并根据元素的类型进行切换。以下是消息的字段描述符:

代码语言:javascript
复制
FieldDescriptor{Syntax: proto3, FullName:, Number: 3, Cardinality: optional, Kind: message, HasJSONName: true, JSONName:, HasPresence: true, Oneof:, Message: google.protobuf.Any}

下面是我的代码:

代码语言:javascript
复制
func doSomething(src protoreflect.Message) {
    src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
            switch {
            case fd.IsList():
                // do something
            case fd.IsMap():
                // do something
            case fd.Message() != nil:
                // do something
            case fd.Kind() == protoreflect.BytesKind:
                // do something
            case *test if message is Any* :
                // do something
            default:
                // do something
            }
        return true
        })
}

我想要一种比ex更正确的方式:

代码语言:javascript
复制
if fd.Message() != nil{
     fd.Message().FullName() == "google.protobuf.Any"
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-29 11:38:29

你可以有一个开关盒来检查类型。

代码语言:javascript
复制
 switch v := fd.(type) { 
    default:
        fmt.Printf("unexpected type %T", v)
    case string:
        //do something
    } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65484519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档