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

我需要根据所反映的值的类型做不同的事情。


value := reflect.ValueOf(someInterface)

我想做一些具有以下效果的事情:


if <type of value> == <type1> {

    do something

} else if <type of value> == <type2> {

    do something

}

这类似于 go 代码中的类型切换。


蝴蝶刀刀
浏览 148回答 1
1回答

噜噜哒

如果您要遍历结构体的字段,则可以使用类型开关根据字段的类型执行不同的操作:value := reflect.ValueOf(s)for i := 0; i < value.NumField(); i++ {&nbsp; &nbsp; field := value.Field(i)&nbsp; &nbsp; if !field.CanInterface() {&nbsp; &nbsp; &nbsp; &nbsp; continue&nbsp; &nbsp; }&nbsp; &nbsp; switch v := field.Interface().(type) {&nbsp; &nbsp; case int:&nbsp; &nbsp; &nbsp; &nbsp; fmt.Printf("Int: %d\n", v)&nbsp; &nbsp; case string:&nbsp; &nbsp; &nbsp; &nbsp; fmt.Printf("String: %s\n", v)&nbsp; &nbsp; }}https://play.golang.org/p/-B3PWMqWTo
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go