zoukankan      html  css  js  c++  java
  • 二二、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可以通过类型断言得到实际变量的类型

      

     

  • 相关阅读:
    C#实现京东登录密码加密POST
    查询SQL Server数据库所有表字段备注
    DataGridView数值列和日期列
    (转)Android 系统 root 破解原理分析
    Dynamics AX 中重点数据源方法
    .NET中Debug模式与Release模式
    DotNetBar的初步使用
    省市区联动小功能
    多余的Using Namespaces或引用会影响程序的执行效率么?
    MSIL指令集
  • 原文地址:https://www.cnblogs.com/WORDPAD/p/15180958.html
Copyright © 2011-2022 走看看