首页 > 后端开发 > Golang > 正文

获取基于原始类型的类型的reflect.Kind

WBOY
发布: 2024-02-09 15:12:09
转载
601人浏览过

获取基于原始类型的类型的reflect.kind

在PHP编程中,获取基于原始类型的类型的reflect.Kind是一项重要的技能。reflect.Kind是PHP提供的反射类库中的一个属性,它可以用来确定一个变量的数据类型。通过使用reflect.Kind,我们可以轻松地获取到变量的类型,进而进行相应的操作和处理。对于PHP开发者来说,掌握这一技能将有助于更好地理解和运用反射机制,提升代码的可读性和灵活性。在本文中,php小编百草将为大家详细介绍如何获取基于原始类型的类型的reflect.Kind,并分享一些实用的示例和技巧,帮助读者更好地掌握这一知识点。

问题内容

我想将reflect.kind作为实现接口的类型的reflect.interface,但其实现基于原始类型:type id string

对此问题的另一种答案可能是如何在调用 kind() 时获取返回reflect.interfaces 的任何类型的reflect.type。

这是 go playground 上的完整示例:

type ID interface {
    myid()
}

type id string

func (id) myid() {}

func main() {
    id := ID(id("test"))
    
    fmt.Println(id)
    fmt.Println(reflect.TypeOf(id))
    
    // How to get the kind to return "reflect.Interface" from the var "id"?
    fmt.Println(reflect.TypeOf(id).Kind())
}
登录后复制

解决方法

reflect.typeof() (和 reflect.valueof()) 需要一个 reflect.typeof()。基本上,无论您传递给 reflect.valueof() 的值是什么,如果它还不是接口值,它将隐式包装在 接口{} 中。如果传递的值已经是接口值,则其中存储的具体值将作为 reflect.typeof() 传递。

Flex 3 CookBook 中文pdf版
Flex 3 CookBook 中文pdf版

一个Flex应用程序有ActionScript和MXML两种语言代码组成。从3.0开始ActionScript已经从基于原型脚本语言进化到完全面向对象的,强类型的符合ECMAScript标准的脚本语言。MXML则是一种标记语言,非常类似于大家所熟悉的超文本标记语言(HTML),扩展标记语言(XML)。   这本FLEX 3 COOKBOOK 中文版是由常青翻译团队翻译的,成员主要有常青、Nigel、草衣薰、Native、王平、ken、屋檐下、小河、Na 等人,目前为目内容质量比较高的一个版本,而且清淅度

Flex 3 CookBook 中文pdf版 0
查看详情 Flex 3 CookBook 中文pdf版

为了避免这种“重新打包”,这是指向接口的指针有意义的罕见情况之一,事实上您在这里无法避免它。您必须传递一个指向接口值的指针。

因此,如果您将指针传递给接口,则该指针将被包装在 interface{} 值中。您可以使用 interface{} 来获取“指向类型”的类型描述符:即指针类型的元素类型,这将是您要查找的接口类型的类型描述符。 p>

示例:

id := id(id("test"))

fmt.println(id)
t := reflect.typeof(&id).elem()
fmt.println(t)

fmt.println(t.kind())
登录后复制

哪些输出(在 go playground 上尝试一下):

test
main.ID
interface
登录后复制

查看相关问题:go中reflect.valueof()和value.elem()有什么区别?

以上就是获取基于原始类型的类型的reflect.Kind的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号