type StructField 结构体字段信息
type StructField struct { Name string PkgPath string // 非导出字段包引入地址 Type Type // 字段的类型 Tag StructTag // 字段的标签 Offset uintptr // 字段在结构体中的字节偏移量 Index []int // 用于Type.FieldByIndex时的索引切片 Anonymous bool // 是否匿名字段 }
type Man struct{ name string `json:"name"` } c := Man{"coco"} t := reflect.TypeOf() s := t.Field(0) // 获取结构体第0位字段信息 fmt.Println(s.Name) // >>> name fmt.Println(s.PkgPath) // >>> main fmt.Println(s.Type) // >>> string
type StructTag 结构体标签
type StructTag string
func(StructTag) Get 获取标签中对应的值
func (tag StructTag) Get(key string) string
s.Type.Get("json") // >>> name // Get 的参数指的是标签定义中的类型
管道类型描述
type ChanDir 管道方向
type ChanDir int const ( RecvDir ChanDir = 1 << iota // <-chan SendDir // chan<- BothDir = RecvDir | SendDir // chan )
type Method
type Method struct { Name string PkgPath string // 非导出字段包地址 Type Type // 方法类型 Func Value // 方法的值 Index int // 用于Type.Method的索引 }
type Man struct { name string } func (m *Man) GetName() string { return m.name } c := Man{"coco"} // 应为GetName方法绑定在类型指针上所以这里传入的参数为指针 // 侧面也证明了结构体方法的绑定及调用方式 t := reflect.TypeOf(&c) mNum := t.NumMethod() fmt.Println(mNum) // >>> 1 m := t.Method(0) fmt.Println(m.Name) // >>> GetName
func Append 向切片类型Value 添加值
func Append(s Value, x ...Value) Value
func AppendSlice 合并切片Value
func AppendSlice(s, t Value) Value
Value 判断方法
func (Value) IsValid 是否持有值
func (v Value) IsValid() bool
var i int v := reflect.ValueOf(i) fmt.Println(v.IsValid()) // >>> true var i interface{} v := reflect.ValueOf(i) fmt.Println(v.IsValid()) // >>> false
func (Value) IsNil 是否为nil
func (v Value) IsNil() bool
func (Value) Kind 获取类型分类
func (v Value) Kind() Kind
func (Value) Type 获取类型描述
func (v Value) Type() Type
Value 转换
func (Value) Convert 将v持有的值转换为类型为t的值,并返回该值的Value封装
func (v Value) Convert(t Type) Value
func (Value) Bool V to Bool
func (v Value) Bool() bool
func (Value) Int V to Int
func (v Value) Int() int64
func (Value) Unit V to Unit
func (v Value) Uint() uint64
func (Vaue) Float V to Float
func (v Value) Float() float64
func (Value)Complex V to Complex
func (v Value) Complex() complex128
func (Value) Pointer V to Pointer
func (v Value) Pointer() uintptr
func (Value) Bytes V to Bytes
func (v Value) Bytes() []byte
func (Value) String V to String
func (v Value) String() string
func (Value) InterfaceDate V to interface
func (v Value) InterfaceData() [2]uintptr
func (Value) Slice V to slice
func (v Value) Slice(i, j int) Value
Value 列表类操作方法
func (Value) Cap 获取容量
func (v Value) Cap() int
func (Value) Len 获取长度
func (v Value) Len() int
func (value) Index 获取指定元素
func (v Value) Index(i int) Value
Value 结构类操作方法
func (Value) MapIndex 获取指定key 的Value
func (v Value) MapIndex(key Value) Value
func (Value) MapKeys 获取键值列表
func (v Value) MapKeys() []Value
func (Value) NumFieId 获取字段为结构体的数量
func (v Value) NumField() int
func (Value) FieId 获取字段结构体中指定位置的Value
func (v Value) Field(i int) Value
func (Value) FieIdByIndex
func (v Value) FieldByIndex(index []int) Value
func (Value) FieIdByName
func (v Value) FieldByName(name string) Value
func (Value) FieIdByNameFunc
func (v Value) FieldByNameFunc(match func(string) bool) Value