利用反射获取指针指向的元素类型的处理方式极为安全
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)。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |