加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

利用反射获取指针指向的元素类型的处理方式极为安全

发布时间:2021-05-30 01:57:54 所属栏目:编程 来源:互联网
导读:Go说话措施中对指针获取反射工具时,可以通过 reflect.Elem() 要领获取这个指针指向的元素范例。这个获取进程被称为取元素,等效于对指针范例变量做了一个 * 操
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)。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读