登录
首页 >  Golang >  Go问答

元素类型在接口中{}

来源:stackoverflow

时间:2024-03-04 16:30:30 277浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《元素类型在接口中{}》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

如何获取[]interface{}的运行时元素类型?

我尝试了以下测试。

var data interface{}
temp := make([]interface{}, 0)
temp = append(temp, int64(1))
data = temp

elemType := reflect.TypeOf(data).Elem()
switch elemType {
case reflect.TypeOf(int64(1)):
    logger.Infof("type: int64 ")
default:
    logger.Infof("default %v", elemType.Kind()) // "default" is matched in fact

}

解决方案


[]interface{} 的元素类型为 interface{}

如果您想要该切片中各个值的动态类型,您需要对该切片进行索引以提取这些值。

data := make([]interface{}, 0)
data = append(data, int64(1))
data = append(data, "2")
data = append(data, false)

typeof0 := reflect.ValueOf(data).Index(0).Elem().Type()
typeof1 := reflect.ValueOf(data).Index(1).Elem().Type()
typeof2 := reflect.ValueOf(data).Index(2).Elem().Type()

https://play.golang.com/p/PVWhIdu1Duz

今天关于《元素类型在接口中{}》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>