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

是否可以使用反射来做类似于类型开关的事情?

是否可以使用反射来做类似于类型开关的事情?

Go
蝴蝶刀刀 2021-11-08 10:04:38
我需要根据所反映的值的类型做不同的事情。value := reflect.ValueOf(someInterface)我想做一些具有以下效果的事情:if <type of value> == <type1> {    do something} else if <type of value> == <type2> {    do something}这类似于 go 代码中的类型切换。
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

如果您要遍历结构体的字段,则可以使用类型开关根据字段的类型执行不同的操作:


value := reflect.ValueOf(s)

for i := 0; i < value.NumField(); i++ {

    field := value.Field(i)

    if !field.CanInterface() {

        continue

    }

    switch v := field.Interface().(type) {

    case int:

        fmt.Printf("Int: %d\n", v)

    case string:

        fmt.Printf("String: %s\n", v)

    }

}

https://play.golang.org/p/-B3PWMqWTo


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

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