• 二二、GO语言的反射


    基本介绍

      1.反射可以在运行时动态获取变量的各种信息,比如变量的类型(type),类别(kind)

      2.如果是结构体变量还可以获取到结构本身的信息(包括字段和方法)

      3.通过反射可以修改变量的值,可以调用关联的方法

      4.使用反射需要引入reflect包

        reflect包介绍

          import "reflect"

          reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,该值代表运行时的数据。Zero接受一个Type类型参数并返回一个代表该类型零值的Value类型值。

    反射的注意事项和细节说明

      1.reflect.Value.Kind,获取变量的类别,返回的是一个常量

      2.Type是类型,Kind是类别,Type和Kind可能是相同的,也可能是不相同的,

          比如说自定义一个结构体Person,那么这个结构体的类别是struct,类型是Person,

          自定义一个结构体Computer,那么这个结构体的类别是struct,类型是Computer,

          但是如果是int的话,那么类型和类别都是int

      3.通过反射可以让变量在interface{}和Reflect.Value之间相互转换,interface可以通过类型断言得到实际变量的类型

      

     

  • 相关阅读:
    jquery笔记
    mysql优化三
    MYSQL优化
    mysql大表优化
    mybatis缓存机制
    mybatis主键返回语句 使用方法,就是实体类.getid即可拿到返回的id
    mybatis组合实体查询
    HTTP Status 500
    Perfmon——为什么“% Disk Time”计数器的值会大于100%?
    Lint——Android SDK提供的静态代码扫描工具
  • 原文地址:https://www.cnblogs.com/WORDPAD/p/15180958.html
Copyright © 2020-2023  润新知