go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 使用反射获取结构体的成员变量类型
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 使用反射获取结构体的成员变量类型相关的知识,希望对你有一定的参考价值。
对指针变量获取反射类型对象时,通过reflect.Elem()方法,获取指针变量指向的元素类型,即取元素,等效于对指针变量做一个*操作。
package main
import (
"fmt"
"reflect"
"testing"
)
func main() {
type cat struct{}
ins := &cat{} // 实例化cat结构体,得到结构体指针类型*cat
typeOfCat := reflect.TypeOf(ins) // 使用reflect.TypeOf,获取结构体实例的反射类型对象
// 使用反射类型对象的.Name()方法和.Kind()方法,显示反射类型对象的类型名和种类
fmt.Printf("name:'%v' kind:'%v' \\n", typeOfCat.Name(), typeOfCat.Kind())
typeOfCat = typeOfCat.Elem() // 只有新声明变量时才会用到海象运算符,其他情况的赋值使用=。no new variables on left side of :=
// 输出指针变量指向元素的类型名和种类
fmt.Printf("element name:'%v' element kind:'%v' \\n", typeOfCat.Name(), typeOfCat.Kind())
}
/*
name:'' kind:'ptr'
element name:'cat' element kind:'struct'
*/
指针变量的反射类型对象的类型名是空,而不是*T。
以上是关于go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 使用反射获取结构体的成员变量类型的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 什么是反射?
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 结构体标签(struct tag)是结构体字段的额外信息标签
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 反射类型对象的类型名(Type)和种类(Kind)