反射的练习题|学习笔记

简介: 快速学习反射的练习题

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程反射的练习题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9772


反射的练习题

 

内容介绍

一、用反射得到 reflect.Value,并获取对应的 Type、Kind 和值,再将 reflect.Value 转化成 interface{},再将 interface{} 转化成 float64。

二、看段代码,判断是否正确,为什么

 

一、给一个变量 var v float64=1.2,请使用反射来得到它的 reflect.Value,然后获取对应的 Type、Kind 和值。并将 reflect.Value 转化成 interface{},再将 interface{} 转化成 float64。

对此不再说明,因为它和前面讲过的案例没有什么区别。ReflectTest01 其实就是完成了这样一个工作,只是当时做的是传了一个整数进去。这个题的要求是做成 float64,并没有什么需要注意的。

 

二、看段代码,判断是否正确,为什么

func main ()

var str string=〞Tom〝 //OK

fs:=reflect.ValueOf(string)//OK

fs.Setstring(〝jack〞)//error

Fmt.Printf(〝%v\n〞,str)

fs 的类型或者是类别都是 string,而这里是 Setstring,那么这句话就会报错。因为它在这里是要求用一个指针去 elem 然后再调用的。把这段代码放在练习里面。新建一个文件夹叫做练习,新建一个文件夹叫做 main.go。这段代码编译过后并没有报什么错误。

修改指令如下:

var str string=〞Tom〝 //OK

fs:=reflect.ValueOf(&str)//OK fs-string

fs.Elem().Setstring(〝jack〞)//OK

fmt.Printf(〝%v\n〞,str)//jack

第一个地方的调整就是要把传入的地方改成一个地址,改成地址以后用 fs.Elem 去取回这个 string 真正指向的那一个数据空间。

报错的原因其实是一样的。地址完了过后加一个Elem,这样就可以了。但是这样一做的话 error 就OK了。下面就会输出 Jack。代码就这样去进行一个改进。通过反射去改变值的时候是有要求的。

 

相关文章
|
Kubernetes API Docker
Mac下安装k8s
Mac下安装k8s
1912 0
|
消息中间件 NoSQL Java
【RabbitMQ】RabbitMQ如何做到保证消息100%不丢失?
【RabbitMQ】RabbitMQ如何做到保证消息100%不丢失?
923 0
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
566 10
|
移动开发 C语言
C语言:&&和&、||和|有什么区别
在C语言中,&&和||是逻辑运算符,分别表示逻辑与(AND)和逻辑或(OR),它们用于连接两个布尔表达式,只有当两边都为真时&&返回真,||在至少一边为真时返回真;&和|是位运算符,对应地进行位级的与、或操作,它们对操作数的二进制位进行逐位处理。&&和||具有短路特性,而&和|没有。
14763 1
|
缓存 安全 Java
Java反射常见面试题最新总结
Java反射常见面试题总结
565 0
|
Kubernetes 应用服务中间件 nginx
K8S(05)核心插件-ingress(服务暴露)控制器-traefik
K8S(05)核心插件-ingress(服务暴露)控制器-traefik
234 0
|
测试技术 数据库
软件设计原则-依赖倒置原则讲解以及代码示例
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的一个重要原则,由Robert C. Martin提出。 依赖倒置原则的核心思想是:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于具体实现细节,而具体实现细节应该依赖于抽象。这意味着我们在进行系统设计时,应该尽量使用抽象类或接口来定义对象之间的依赖关系,而不是直接依赖于具体的实现类
984 0
|
JSON 安全 fastjson
BurpSuite插件 -- FastjsonScan(反序列化检测)
BurpSuite插件 -- FastjsonScan(反序列化检测)
451 0
|
数据安全/隐私保护
BUUCTF 爱因斯坦 1
BUUCTF 爱因斯坦 1
574 0
|
消息中间件 前端开发 小程序
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)
DDD实战之五:战略设计之上下文映射和系统分层架构(下)