获取基于原始类型的类型的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()
的值是什么,如果它还不是接口值,它将隐式包装在 interface{}
中。如果传递的值已经是接口值,则其中存储的具体值将作为 interface{}
传递。
为了避免这种“重新打包”,这是指向接口的指针有意义的罕见情况之一,事实上您在这里无法避免它。您必须传递一个指向接口值的指针。
因此,如果您将指针传递给接口,则该指针将被包装在 interface{}
值中。您可以使用 type.elem()
来获取“指向类型”的类型描述符:即指针类型的元素类型,这将是您要查找的接口类型的类型描述符。 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

是的,H5页面制作是前端开发的重要实现方式,涉及HTML、CSS和JavaScript等核心技术。开发者通过巧妙结合这些技术,例如使用<canvas>标签绘制图形或使用JavaScript控制交互行为,构建出动态且功能强大的H5页面。

CSS自定义resize符号的方法与背景色统一在日常开发中,我们经常会遇到需要自定义用户界面细节的情况,比如调...

关于inline-block元素错位显示的原因及解决方案在编写网页布局时,我们常常会遇到一些看似奇怪的显示问题。比...

实时比特币美元价格 影响比特币价格的因素 预测比特币未来价格的指标 以下是 2018-2024 年比特币价格的一些关键信息:

如何使用JavaScript或CSS控制浏览器打印设置中的页首和页尾在浏览器的打印设置中,有一个选项可以控制是否显�...

如何实现分段器的45度曲线效果?在实现分段器的过程中,如何让点击左侧按钮时右侧边框变成45度曲线,而点�...
