112 | Go编程模式:Go Generation
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
这节课,我们来学习一下 Go 语言的代码生成的玩法。
Go 语言的代码生成主要还是用来解决编程泛型的问题。泛型编程主要是解决这样一个问题:因为静态类型语言有类型,所以,相关的算法或是对数据处理的程序会因为类型不同而需要复制一份,这样会导致数据类型和算法功能耦合。
我之所以说泛型编程可以解决这样的问题,就是说,在写代码的时候,不用关心处理数据的类型,只需要关心相关的处理逻辑。
泛型编程是静态语言中非常非常重要的特征,如果没有泛型,我们就很难做到多态,也很难完成抽象,这就会导致我们的代码冗余量很大。
现实中的类比
为了帮你更好地理解,我举个现实当中的例子。我们用螺丝刀来做打比方,螺丝刀本来只有一个拧螺丝的作用,但是因为螺丝的类型太多,有平口的,有十字口的,有六角的……螺丝还有不同的尺寸,这就导致我们的螺丝刀为了要适配各种千奇百怪的螺丝类型(样式和尺寸),也是各种样式的。
而真正的抽象是,螺丝刀不应该关心螺丝的类型,它只要关注自己的功能是不是完备,并且让自己可以适配不同类型的螺丝就行了,这就是所谓的泛型编程要解决的实际问题。
Go 语方的类型检查
因为 Go 语言目前并不支持真正的泛型,所以,只能用 interface{} 这样的类似于 void* 的过度泛型来玩,这就导致我们要在实际过程中进行类型检查。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在Go语言中利用代码生成技术解决泛型编程的问题。作者首先强调了泛型编程的重要性,并通过螺丝刀类比说明了其作用。接着,作者介绍了在Go语言中使用 `interface{}` 进行类型检查的技术,包括 Type Assert 和 Reflection。然后,文章对比了C++中的模板技术,并提出了在Go中使用代码生成技术的解决方案。最后,详细介绍了使用Go Generator进行代码生成的步骤,包括函数模板、生成脚本和生成代码的示例。通过本文,读者可以了解到在Go语言中如何利用代码生成技术来解决泛型编程的问题,以及如何使用Go Generator进行代码生成。文章还提到了第三方工具,为读者提供了更多便利。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 萧他山之石可以攻玉,语言只是工具,那些编程思想才是真正重要的,皓叔强2021-02-1814
- 林万程现在有泛型了2022-04-215
- Steven这个玩法,有点牛逼了,开拓视野啊。感觉很nice,写一个模版,如果模版好,后期根据模版直接批量生产业务代码,简单、干净而且还可以语义化。配置生产代码的方式写代码。2022-10-17归属地:上海
- 顺势而为低代码的背后,应该是这些脚本工具吧?2022-08-16归属地:广东
- 方勇(gopher)代码生成器,目前在做微服务troubleshooting,策略配置基于此模式!2021-12-23
收起评论