以铜为镜可以正衣冠,以史为镜可以知兴衰

历史的车轮总是滚滚向前,永不停息。公道自在人心,不管谎言如何美丽,最终都会被戳破,总幻想着颐指气使的居高临下的态度来指教他人,首先必须反思下自身到底有没有资格给别人上课,现在的历史不是一百二十年前的历史,幻想着几尊大炮占领一个国家的时代已然成为历史,总抱着一百多年前的旧思维与我们打交道是行不通的,指三说四也是不行的,惹怒了也是不惹的,最终还是会为自己的愚蠢行为付出相应的代价。


反射

1、什么是发射?

反射说的简单点就是程序在运行的过程中,通过某种方式能够获取变量的类型和值,这种方式就称之为反射。而go语言中的反射主要是通过reflect包实现的,其中reflect.TypeOf()和reflect.ValueOf分别返回reflect.Type和reflect.Value。

type order struct {ordId      intcustomerId int
}func createQuery(q interface{}) {t := reflect.TypeOf(q)v := reflect.ValueOf(q)fmt.Println("Type ", t)fmt.Println("Value ", v)}
func main() {o := order{ordId:      456,customerId: 56,}createQuery(o)}

2、reflect.Type和reflect.Kind的区别

reflect.Type和reflect.Kind的区别是前者表示实际类型,而后者表示该类型的特定的类别

//举个栗子
type order struct {ordId      intcustomerId int
}func createQuery(q interface{}) {t := reflect.TypeOf(q)k := t.Kind()fmt.Println("Type ", t)fmt.Println("Kind ", k)}
func main() {o := order{ordId:      456,customerId: 56,}createQuery(o)}//输出的结果为
Type  main.order
Kind  struct

3、NumField()和Field()方法

NumField方法返回结构体中字段的数量,而Field(i int)方法返回i的reflect.Value。

//举个栗子
type order struct {ordId      intcustomerId int
}func createQuery(q interface{}) {if reflect.ValueOf(q).Kind() == reflect.Struct {v := reflect.ValueOf(q)fmt.Println("Number of fields", v.NumField())for i := 0; i < v.NumField(); i++ {fmt.Printf("Field:%d type:%T value:%v\n", i, v.Field(i), v.Field(i))}}}
func main() {o := order{ordId:      456,customerId: 56,}createQuery(o)
}

输出:
Number of fields 2
Field:0 type:reflect.Value value:456
Field:1 type:reflect.Value value:56

4、Int和String方法

Int和String可以帮助我们分别提取reflect.Value作为int64和string.

//举个栗子
func main() {a := 56x := reflect.ValueOf(a).Int()fmt.Printf("type:%T value:%v\n", x, x)b := "Naveen"y := reflect.ValueOf(b).String()fmt.Printf("type:%T value:%v\n", y, y)}

输出:
type:int64 value:56
type:string value:Naveen


总结

反射这部分的内容知识点讲解的比较少,算是比较容易掌握的知识点,作为一名优秀的编程从业人员必须拿下这部分的内容,目前的教程中没有添加实际的应用场景,可能随着学习的深入后期会补充一些实际的应用场景案例。

go语言的魔幻旅程14-反射相关推荐

  1. go语言的魔幻旅程20-io包

    今日长缨在手,何日缚住苍龙 五一假期的这几天,闲来无事,于是找了之前关系较好的二位同学聊了聊各自的现状,暂且称呼这两位同学分别为A和B吧,A同学本科学的也是计算机,因为学校地理位置的因素,大四实习的时 ...

  2. go语言的魔幻旅程03-控制结构

    他强任他强,清风拂山岗,他横由他横,明月照大江 倚天不出,谁与争锋,时间的车轮穷无声息已经挥别数载,原著作者金庸老先生早已经驾鹤西去,但其作品小说"飞雪连天射白鹿,笑书神侠倚碧鸳" ...

  3. go语言的魔幻旅程18-bytes包

    天下熙熙皆为利来,天下攘攘皆为利往 这段时间在不知不觉中又被动的学会了一个新的"成语"-潘嘎之交,想必不需要我在此在此普及故事的又来,但凡是稍微关注点热点新闻的人肯定对此不会感觉到 ...

  4. go语言的魔幻旅程17-strconv包

    君问归期未有期,巴山夜雨涨秋池 离家已近一载,虽偶有思乡欲踏归途之心,但奈何各种各样现实原因的羁绊,始终未能如愿动身,或许下一次的归途似乎只能安排到下一个收获的黄金时节.说起家乡对于大多数人而言总感觉 ...

  5. go语言的魔幻旅程16-strings包

    故人西辞黄鹤去,此地空余黄鹤楼 不知道一千多年前诗仙李白在创作这首诗词的内心是怎样的,如果真的有时空穿梭机这种神奇的东西,倒是可以拿来穿越一下.只可惜昔人已逝.物是人非,诗仙早已经消失在历史的年轮中, ...

  6. go语言的魔幻旅程28-go命令

    长安米贵,居大不易 历史上无论哪朝哪代,像"长安"这种地方,对于绝大部分的普通人而言,即使拼尽全力,大概率也是无法留下来的,因此针对这样的现实就连唐朝伟大的诗人白居易都感叹道:&q ...

  7. 一个数据包的旅程_数据科学语言的个人旅程

    一个数据包的旅程 by Elena Nisioti 由Elena Nisioti 数据科学语言的个人旅程 (A personal journey through the languages of da ...

  8. java反射通俗解释,谁来帮用通俗易懂的语言解释下java的反射机制

    谁来帮用通俗易懂的语言解释下java的反射机制以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 谁来帮用通俗易懂的语言解释 ...

  9. GO语言学习之路14

    2022/02/05 package mainimport ("encoding/json""fmt" )/*1.结构体的所有字段在内存中是连续的2.结构体是用 ...

  10. go程序设计语言第十二章-反射

    the go programming language Go提供一种机制,能够在运行时更新变量.查看它们的值,调用它们的方法和它们内在的操作,所有的这些都不需要在编译时知道它们的类型.这种机制就叫做反 ...

最新文章

  1. 链家租房信息案例数据分析
  2. static_cast与c风格的强制类型转换比较
  3. FireFox,爱死你了
  4. java中字节码_Java字节码浅析(三)
  5. UA OPTI512R 傅立叶光学导论5 光学常用基本函数回顾
  6. 你真的了解Ioc与AOP 吗?(2)
  7. python爬虫实现网页采集器
  8. linux查看vnc服务加密修复,VNC远程管理Linux服务器安全指导
  9. shell练习DAY14
  10. java中不使用局部变量a的值_【转发】Java匿名类中使用的局部变量为何要加final...
  11. 等级保护第三级安全通用要求笔记(2019)
  12. Android EditText常用属性
  13. java-php-python-ssm在线装机报价系统计算机毕业设计
  14. 读书心得-《OKR工作法:谷歌、领英等顶级公司的高绩效秘籍》
  15. itop启动mysql_使用iTOP进行CMDB资产管理
  16. 【笔试题】嵌入式软件开发——嵌入式软件工程师经典笔试题
  17. MATLAB 按组聚类绘图gscatter
  18. 在线模拟c语言编程,c语言模拟编程学习软件v2019
  19. VS2022快捷键修改 快速注释 行注释 ctrl +/
  20. 计算机游戏配机方案,小白不会装机怎么办?2021年最佳游戏PC整机配置一览

热门文章

  1. 浙江大学计算机科学与技术直博培养方案,计算机科学与技术学科 博士研究生(直博生)培养方案.docx...
  2. java 动态字节码_Java动态性-字节码操作
  3. iOS开发 内购流程 https://upload-images.jianshu.io/upload_images/1749914-e7b6de6a4931ea3c.png?imageMogr2/au
  4. 妙用autorun,通过USB获取密码
  5. 检测数据过期的处理方法(redis过期时间、订单规定时间内支付等)
  6. Canvas实现缩放+涂鸦改进
  7. php api session 验证,laravel 【mews/captcha】图片验证码 api接口形式获取、验证,不通过session...
  8. 全国分省份货物周转量数据集(2017-2020年)
  9. Golang Gin 实战(十一)| HTML模板渲染
  10. 九龙证券|中国经济持续释放积极信号 石油需求前景乐观