添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
Go语言并发
10 Go语言反射
10.1 Go语言反射(reflection)
10.2 Go语言反射规则浅析
10.3 反射——性能和灵活性的双刃剑
10.4 通过反射获取类型信息
10.5 通过反射获取指针指向的元素类型
10.6 通过反射获取结构体的成员类型
10.7 Go语言结构体标签
10.8 通过反射获取值信息
10.9 通过反射访问结构体成员的值
10.10 判断反射值的空和有效性
10.11 通过反射修改变量的值
10.12 通过类型信息创建实例
10.13 通过反射调用函数
10.14 Go语言inject库:依赖注入
Go语言文件处理 Go语言编译与工具
Go语言程序中对指针获取反射对象时,可以通过 reflect.Elem() 方法获取这个指针指向的元素类型。这个获取过程被称为取元素,等效于对指针类型变量做了一个 * 操作,代码如下: package main import ( "fmt" "reflect" func main() { // 声明一个空结构体 type cat struct { // 创建cat的实例 ins := &cat{} // 获取结构体实例的反射类型对象 typeOfCat := reflect.TypeOf(ins) // 显示反射类型对象的名称和种类 fmt.Printf("name:'%v' kind:'%v'\n",typeOfCat.Name(), typeOfCat.Kind()) // 取类型的元素 typeOfCat = typeOfCat.Elem() // 显示反射类型对象的名称和种类 fmt.Printf("element name: '%v', element kind: '%v'\n", typeOfCat.Name(), typeOfCat.Kind()) 代码输出如下: name: ''  kind: 'ptr'
element name: 'cat', element kind: 'struct'

代码说明如下: 第 15 行,创建了cat结构体的实例,ins 是一个 *cat 类型的指针变量。 第 18 行,对指针变量获取反射类型信息。 第 21 行,输出指针变量的类型名称和种类。Go 语言的反射中对所有指针变量的种类都是 Ptr,但注意,指针变量的类型名称是空,不是 *cat。 第 24 行,取指针类型的元素类型,也就是 cat 类型。这个操作不可逆,不可以通过一个非指针类型获取它的指针类型。 第 27 行,输出指针变量指向元素的类型名称和种类,得到了 cat 的类型名称(cat)和种类(struct)。

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

微信扫码关注公众号