go reflect Elem() 深入学习
示例
var r io.Reader = os.Stdin // os.Stdin is of type *os.File which implements io.Readerv := reflect.ValueOf(r) // r is interface wrapping *os.File value
fmt.Println(v.Type()) // *os.Filev2 := reflect.ValueOf(&r) // pointer passed, will be wrapped in interface{}
fmt.Println(v2.Type()) // *io.Reader
fmt.Println(v2.Elem().Type()) // navigate to pointed: io.Reader (interface type)
fmt.Println(v2.Elem().Elem().Type()) // 2nd Elem(): get concrete value in interface: *os.File
概括:
传入是指针的话,像一种层级递进关系,valueof.type获取的是变量的表面类型,第一次elem.type获取的是此变量的接口类型,再一次就是实际值或类型 ;
非指针传入的话,则.type就是实际类型
go reflect Elem() 深入学习相关推荐
- 仿elem页面学习之表单提交的动作
接上篇 仿elem页面学习之input type=search 搜索地址 当我们在input输入框输入地址,有时候可以不记得准确的店名或地址,这时候我们希望软件能根据搜索关键词给出一些相近的推荐,如上 ...
- 对于reflect: Elem of invalid type main.User类型的错误解释
一开始我的代码是这样的 func findTag(str interface{}) {t := reflect.TypeOf(str).Elem()for i := 0; i < t.NumFi ...
- Go语言--反射(reflect)
0 反射的概念 反射是指计算机程序在运行时(runtime)可以访问.检测和修改本身状态或行为的一种能力.通俗地将,反射就是程序能够在运行时动态地查看自己的状态,并且允许修改自身的行为. 程序在编译时 ...
- Go 学习笔记(39)— Go 反射
本文参考 http://c.biancheng.net/golang/reflect/ 反射是把双刃剑,功能强大但代码可读性并不理想,若非必要并不推荐使用反射. 1. 反射概念 反射是指在程序运行期对 ...
- Go 语言编程 — reflect 反射机制
目录 文章目录 目录 为什么需要反射? reflect 包 通过 reflect.TypeOf() 获取对象的反射类型 reflect.Type 通过 reflect.Elem() 获取指针所指向的对 ...
- Go语言类库-reflect(反射)
概述 什么是反射? 反射是计算机程序在运行时可以访问,检查和修改本身状态或者行为的一种能力,大多数编程语言都支持反射.Go语言中,使用反射可以在程序执行过程中更新变量和检查对象的属性,调用对象的方法. ...
- Golang的reflect
文章目录 1. 概述 2. 反射类型对象 3. 反射的值对象 4. 反射修改值 5. 综合Demo 1. 概述 Go语言提供了一种机制,能够在运行时更新变量和检查它们的值.调用它们的方法和它们支持的内 ...
- Go语言学习笔记十二(反射的类型对象)
Go语言的反射 在G语言程序中可以通过reflect包的TypeOf()函数获取任意值的类型对象,程序可以通过类型对象访问任意值的类型信息. package main import ("fm ...
- 【学习笔记】Golang语法学习笔记
一.入门 go是编译型的语言,代码风格类似于C语言,其最大特点是支持并发编程,go文件后缀名为.go 在命令行通过go run helloworld.go来运行,或先通过go build hellow ...
最新文章
- Redis详解(八)------ 主从复制
- tftp下载内核和文件系统
- 【数据结构与算法】数组与链表
- python连等号_Python比较2列表和2元组用等号
- 【Python】密码生成器
- windows多个服务器之间共享文件夹,windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。...
- php switch正则表达式,switch的用法以及正则表达式简单的用法
- Window.location.href命令在JS中跳转无效或自动忽略
- 晨风机器人php接口程序_微信之后,QQ也开始封杀机器人了!!!
- ADS入门,使用ADS创建和仿真一个简单的线路
- JAVA仿百度网盘(JAVA毕业设计)
- FFmpeg — 视频剪辑、动静水印、转场特效[gl-transitions]
- Kibana启动报错 server is not ready yet的解决方案
- 小柯在学JAVA之第二弹
- 在ADSP-BF561上使用x264(4):确认热点
- php怎么检测数据类型,PHP检测数据类型的几种方法总结和技巧
- 英汉《营销学》常用词汇-1
- iCoremail企业邮箱移动办公新突破
- 崩坏3新版本服务器维护多久,崩坏3V3.5版本10月17日版本更新维护通知
- ps2021一键换天空教程,来看看吧
热门文章
- out of office ,out of the office,OOO的区别和联系
- Dynamics CRM2011自定义框架解决方案
- 雷达系统 学习笔记(四)——脉冲多普勒雷达1
- 什么是Essay和Article?
- python 批量中文数字文件名互转英文阿拉伯数字
- 作为一名程序员,如何利用自己的技术去创业和赚钱?
- 云知梦php视频教程百度云_php学习笔记(里面是自己看云知梦php视频时的思考和笔记)(一)...
- 软件测评师--第14小时 易用性测试
- 内码转换表的来源与制作
- C# 以管理员权限删除文件