GO typeof 用法

type Hello struct {Name string
}func useTypeOf(val interface{}) {msgType := reflect.TypeOf(val)msgKind := msgType.Kind()msgID := msgType.Elem()msgIDname := msgType.Elem().Name()fmt.Println("Type is     ", msgType)fmt.Println("Kind is     ", msgKind)fmt.Println("msgID is    ", msgID)fmt.Println("msgIDname is", msgIDname)
}func main() {useTypeOf(&Hello{})
}

输出

Type is      *main.Hello
Kind is      ptr
msgID is     main.Hello
msgIDname is Hello

特别的

在使用msgType.Elem() 的时候,必须要求函数接受的类型reflect.TypeOf(val) 也就是val的类型必须是Array, Chan, Map, Ptr, or Slice中的一种

// Elem returns a type's element type.
// It panics if the type's Kind is not Array, Chan, Map, Ptr, or Slice.
Elem() Type

上面是官方说明,如果你这样写会报错的

这样使用 msgType.Elem()会报错
func main() { val:= Hello{ Name: "Fuck name", } useTypeOf(val)
}

所以最好引用传递,useTypeOf(&Hello{})

Go typeof、 Kind、Elem、Name用法相关推荐

  1. C语言高级用法---typeof()关键字

    前言 typeof() 是GUN C提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型. 本文总结了typeof()关键字的常见用法,并给出了相应的例子,以加深理解 ...

  2. 对于reflect: Elem of invalid type main.User类型的错误解释

    一开始我的代码是这样的 func findTag(str interface{}) {t := reflect.TypeOf(str).Elem()for i := 0; i < t.NumFi ...

  3. Golang 反射操作整理

    前言 反射是什么? 我们平常也是经常用到, 而且这名词都用烂了, 这里就不再详细介绍了. 简单说, 就是有一个不知道是什么类型的变量, 通过反射可以获取其类型, 并可操作属性和方法. 反射的用途一般是 ...

  4. Go(上):go基础 续

    文章目录 sync包--互斥锁 sync包--读写锁 channel通道 关闭通道和通道上范围循环 缓冲通道 定向通道 time包中的通道的相关函数 select语句 go语言的CSP模型 反射机制 ...

  5. Golang学习笔记(一)

    比较杂,不包含基本语法,主要是①标准库的学习,参考自github和②一些进阶和坑 长期更新 map内的值由于是值类型,所以对结构体以及数组等需要取地址才可以修改,否则只读取 初始化结构体时像引用类型初 ...

  6. 《Go学习笔记 . 雨痕》反射

    一.类型(Type) 反射(reflect)让我们能在运行期探知对象的类型信息和内存结构,这从一定程度上弥(mi)补了静态语言在动态行为上的不足.同时,反射还是实现元编程的重要手段. 和 C 数据结构 ...

  7. 前端JavaScript疑问简答题面试题

    JavaScript面试题 1. 简述同步和异步的区别 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作 异步:浏览器访问服务 ...

  8. Golang Devops项目开发(1)

    1.1 GO语言基础 1 初识Go语言 1.1.1 开发环境搭建 参考文档:<Windows Go语言环境搭建> 1.2.1 Go语言特性-垃圾回收 a. 内存自动回收,再也不需要开发人员 ...

  9. Kubernetes1.5源码分析(二) apiServer之资源注册

    源码版本 Kubernetes v1.5.0 简介 k8s里面有各种资源,如Pod.Service.RC.namespaces等资源,用户操作的其实也就是这一大堆资源.但这些资源并不是杂乱无章的,使用 ...

  10. javascript如何判断变量的数据类型

    typeof 用法示例 var arr = []; typeof arr; //'object' typeof(arr); //'object' typeof实际上是一个一元运算符,因此可以用上述代码 ...

最新文章

  1. hadoop学习--基于Hive的Hadoop日志分析
  2. BZOJ-2705-Longge的游戏-SDOI2012-欧拉函数
  3. 20170728xlVBA改转置一例
  4. 将一组数进行排序后,也输出他与之对应的序号
  5. mysql怎么改字体编码_mysql怎么改字符编码?
  6. HDU 1867 KMP
  7. Spring事件发布
  8. Linux-正则表达式的POSIX规范及流派
  9. http://www.blogjava.net/heyang/archive/2010/12/02/
  10. VIM E297: Write error in swap file
  11. [转]常见的软件版本编号及命名
  12. opencv之图片处理看这一篇就够了(一)
  13. ucgui添加自定义汉字库
  14. macOS:卸载JRE或JDK
  15. android 表情包下载,超级表情包app下载
  16. 网页播放器的使用(ckplayer)
  17. setFieldsValue设置下划线属性_在Word中添加下划线居然有那么多方法!
  18. 网络统考计算机应用基础ppt视频,计算机应用基础课程网络统考辅导.ppt
  19. Win键无效/Win键失灵/Win键被禁用/Win键+组合键不起作用
  20. 分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月11日-6月17日)

热门文章

  1. 小学C++编程入门书籍及相关资料介绍(一)
  2. Intent基本概念
  3. 2022-2027年中国非人寿保险市场竞争态势及行业投资前景预测报告
  4. VS2019配置WinPcap开发
  5. linux 学习 个人总结笔录(五)
  6. python图像色彩分析_使用OpenCV和Python计算图像的“色彩”
  7. python2048游戏代码_python 实现 2048 游戏 (二)
  8. 联想E43升级bios激活windows 7
  9. 有了这十五款编程游戏,谁都可以学编程!
  10. .Net core web api 上传图片代码 。 AutoMapper映射注入。sql suger数据库依赖注入