zoukankan      html  css  js  c++  java
  • Golang对基本数据类型和结构体进行反射

    具体代码

    package main
    
    
    import (
    	"fmt"
    	"reflect"
    )
    
    //  1.对基本数据类型、interface{}、reflect.Value进行转换
    func ReflectTest1(in interface{}){
    	// 通过反射获取传入的变量的type, kind
    	// 1.先获取到 reflect.Type
    	rType := reflect.TypeOf(in)
    	fmt.Printf("rType类型为%T,值为%v
    ", rType, rType)
    
    	// 2.获取到 reflect.Value
    	rVal := reflect.ValueOf(in)
    	fmt.Printf("rVal类型为%T,值为%v
    ", rVal, rVal)
    	
    	// 获取变量对应的 kind
    	// 1) rVal.Kind() ===>
    	// 2) rType.Kind() ===>
    	fmt.Printf("Kind =%v, kind =%v
    ", rVal.Kind(), rType.Kind())
    	
    	// 3.将 rVal 转成 interface{}
    	iv := rVal.Interface()
    	fmt.Printf("iv类型为%T,值为%v
    ", iv, iv)
    
    	// 将 interface{} 通过类型断言转为需要的类型
    	num := iv.(int)
    	fmt.Printf("num类型为%T,值为%v
    
    ", num, num)
    }
    
    func ReflectTest2(in interface{}){
    	// 通过反射获取传入的变量的type, kind
    	// 1.先获取到 reflect.Type
    	rType := reflect.TypeOf(in)
    	fmt.Printf("rType类型为%T,值为%v
    ", rType, rType)
    	
    	// 2.获取到 reflect.Value
    	rVal := reflect.ValueOf(in)
    	fmt.Printf("rVal类型为%T,值为%v
    ", rVal, rVal)
    
    	// 获取变量对应的 kind
    	// 1) rVal.Kind() ===>
    	// 2) rType.Kind() ===>
    	fmt.Printf("Kind =%v, kind =%v
    ", rVal.Kind(), rType.Kind())
    
    	// 3.将 rVal 转成 interface{}
    	iv := rVal.Interface()
    	fmt.Printf("iv类型为%T,值为%v
    ", iv, iv)
    	
    	// 将 interface{} 通过类型断言转为需要的类型
    	stu := iv.(Student)
    	fmt.Printf("stu类型为%T,值为%v
    
    ", stu, stu)
    }
    
    type Student struct{
    	Name string
    	Age int
    }
    
    func main(){
    	// 1.对基本数据类型、interface{}、reflect.Value进行转换
    	var num int = 100
    	ReflectTest1(num)
    
    	// 2.对结构体的反射
    	var stu Student = Student{"Tom", 20}
    	ReflectTest2(stu)
    }
    

    结果

  • 相关阅读:
    css3阴影 box-shadow
    border-radius给元素加圆角边框
    企鹅邮箱开放平台
    点击按钮回到顶部
    5.2 Array类型
    js面试题知识点全解(一闭包)
    js面试题知识点全解(一作用域)
    js面试题知识点全解(一原型和原型链)
    js面试题知识点全解(一变量类型和计算)
    webpack入门篇--1.简单介绍
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14404338.html
Copyright © 2011-2022 走看看