go reflect struct (go反射与struct结构体)

一、介绍

reflect包主要用来检查interface{}类型的类型type和值value
我们可以用

reflect.TypeOf()  得到  reflect.Type 反射类型
reflect.ValueOf() 得到  reflect.Value 反射值

二、reflect.Type

在这里我们以struct举例:打开源码 src/reflect/type.go

type Type interface {
    //通用的3个函数
    //返回kind,基础类型,Struct,Bool,Int,Int8,Array,Chan,Func,Map...
    Kind() Kind
    //返回结构体名称
    Name() string
    //返回包路径
    PkgPath() string

    
 
    //struct相关的3个重要方法,可以看到如果不是struct的话,会报错

    // Field returns a struct type's i'th field.
    // It panics if the type's Kind is not Struct.
    // It panics if i is not in the range [0, NumField()).
    Field(i int) StructField

    // FieldByName returns the struct field with the given name
    // and a boolean indicating if the field was found.
    FieldByName(name string) (StructField, bool)

    // NumField returns a struct type's field count.
    // It panics if the type's Kind is not Struct.
    NumField() int
}

本文主要截取了reflect.Type的6个方法
1.通用的方法 Kind(),Name(),PkgPath()
2.struct相关方法 NumField(),FieldByName(),Field()

我们先看一个结构体

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

二、reflect.Value

你可能感兴趣的:(go)