首页 > 其他分享 >reflect反射结构体

reflect反射结构体

时间:2023-02-23 19:59:01浏览次数:32  
标签:反射 fmt Elem reflect Age Univercity reType 结构

package main

import (
	"fmt"
	"reflect"
)

type Univercity struct {
	Name string
	Age  int
}

func (u Univercity) Sport() {
	fmt.Println("学校开展运动会")
}

func (u Univercity) Calc(a, b int) int {
	fmt.Println("test")
	return a + b

}

func testReflect(i interface{}) {
	reValue := reflect.ValueOf(i)
	reType := reflect.TypeOf(i)
	//修改Univercity结构体中 Age的值,这里需要传入的是指针,需要使用Elem()
	for i := 0; i < reValue.Elem().NumField(); i++ {
		if reType.Elem().Field(i).Name == "Age" {
			reValue.Elem().Field(i).SetInt(80)
		}
	}

	//获取到指定的Calc方法,然后调用方法,调用方法需要使用Call(),传入的参数是reflect.Value的切片类型
	//方法返回的也是reflect.Value的切片,所以需要索引取到结构体方法返回的值
	for i := 0; i < reType.NumMethod(); i++ {
		if reType.Method(i).Name == "Calc" {
			args := []reflect.Value{reflect.ValueOf(10), reflect.ValueOf(20)}
			result := reValue.Method(i).Call(args)
			fmt.Println(result[0])

		}

	}
}
func main() {
	u1 := Univercity{"四川大学", 50}
	testReflect(&u1)
	fmt.Println(u1.Age)
}

标签:反射,fmt,Elem,reflect,Age,Univercity,reType,结构
From: https://www.cnblogs.com/bangbangzoutianya/p/17149194.html

相关文章

  • Java 反射
    1.小demo快速上手读取配置文件信息,实现调用方法@SuppressWarnings({"all"})//取消显示指定的编译器警告publicclassReflectionQuestion{publicstaticv......
  • 结构体详解
    这是一篇介绍C语言结构体基本知识的博客,包含结构体声明,笔者在使用时曾犯过的一些错误等。一、背景在编程中,我们常会遇到一些复杂对象,其中包含各种类型的数据,而我们又需......
  • 程序的组织结构
       #测试对象的布尔值print(bool(False))print(bool(0))print(bool(0.0))print((bool(None)))print(bool(''))print(bool(""))print(bool([]))#空列表print......
  • Java ”框架 = 注解 + 反射 + 设计模式“ 之 反射详解
    Java”框架=注解+反射+设计模式“之反射详解每博一文案无论幸福还是苦难,无论光荣还是屈辱,你都要自己遭遇与承受。——————《......
  • RTMP推送扩展支持HEVC(H265)之Metadata结构填写详解
    鉴于广大码友对上一篇文章​​RTMP推送扩展支持HEVC(H265)​​的Metadata数据结构还存在不清楚的地方,这里对RTMP推送Metadata的结构进行详解。首先,我们先讲解下H.264/AVC......
  • C/C++数据结构与算法课程设计选题详情[2023-02-23]
    C/C++数据结构与算法课程设计选题详情[2023-02-23]选题详情选题一:迷宫与栈问题【问题描述】以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,......
  • 软件体系结构课堂测试02– 架构评价
     班级:信2005-1  学号:20204010   姓名:耿晴 根据观看的视频内容,回答下列问题:1、 你认为改造的房屋存在什么样的问题?(至少五个存在问题)安全问题:楼梯过于陡峭......
  • 软件体系结构课堂测试02– 架构评价
    根据观看的视频内容,回答下列问题:1、 你认为改造的房屋存在什么样的问题?(至少五个存在问题)安全问题:楼梯陡峭。可用性:空间小易用性:上厕所不方便采光不足,做饭吃饭不方......
  • 决战圣地玛丽乔亚Day18----关于mysql死锁+ mysql索引的数据结构相关
    Mysql为什么会产生死锁? 事务A、B分别拿到1,4的独占行锁,然后再去拿4,1的行锁,都会由于另一个事务不释放锁等待,造成了循环等待的局面。(1)同一时刻只能有一个事务持有这......
  • 1-2 计算机的四层结构
    网络的四层结构在看这个视频之前我真的不知道为什么这里只有四层,本科阶段教的时候说的应该是七层结构,包括我记得我的那本计算机网络自顶而下里是这么说的,要不就是我没看完......