37 | 编程范式:Go语言的委托模式
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
我们再来看 Go 语言这个模式,Go 语言的这个模式挺好玩儿的。声明一个 struct,跟 C 很一样,然后直接把这个 struct 类型放到另一个 struct 里。
委托的简单示例
我们来看几个示例:
由上面可知:
我们声明了一个 Widget,其有 X和Y;
然后用它来声明一个 Label,直接把 Widget 委托进去;
然后再给 Label 声明并实现了一个 Paint() 方法。
于是,我们就可以这样编程了:
我们可以看到,如果有成员变量重名,则需要手动地解决冲突。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Go 语言的委托模式是本文的重点内容,通过示例展示了在 Go 语言中如何使用委托模式进行编程。文章首先介绍了简单的委托示例,然后扩展到了包含按钮和列表框的更复杂的示例。接着,文章讨论了如何利用泛型编程、函数式编程和控制反转等编程范式来实现 Undo 功能,展示了如何将 Undo 的流程抽象出来,而具体的 Undo 操作交给业务代码来维护。这种方式类似于 C++ 的泛型编程和 map、reduce、filter 等控制流程的实现方式,同时也体现了控制反转的思想。整体而言,本文通过具体的示例和代码展示了 Go 语言中委托模式的应用,以及如何结合多种编程范式实现功能扩展和抽象,为读者提供了深入理解和应用委托模式的思路和方法。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- milley这样的代码和思维只能说赏心悦目!2018-02-0639
- 小文同学1、文章说了什么? 文章分了两部分,一部分先简单说了 Golang 的委托用法。简单来说,就是讲一个 structA 嵌套到另外一个 structB 中,structB 会自动继承 structA 的字段。其后,通过一个更加复杂的例子说明委托的用法。(作为一个 Java 程序员,Golang 为 struct 增加方法,和定义接口的方法让人印象深刻) 另一部分,作者举了一个更加复杂的例子说明 Go 中委托和接口多态是如何实现一个数据容器的 Undo 实现的。为了说明这部分,作者通过以下步骤一说说进阶说明: 1、最简单的一个 IntSet,并定义了 Add ,Delete 方法; 2、通过一个委托的方法,将 IntSet 委托给一个新的 struct,新 struct 再重写一次 Add,Delete 方法以记录步骤(保存Undo函数对象),完成 Undo 功能; 3、最后作者希望可以进一步改写,编写一个 Undo 栈,委托给 IntSet ,并在 IntSet 编写 Add,Delete 的方法中就完成 Undo 函数对象的保存。这也是一个实现方法。2020-11-0410
- Jie求教,最后那段代码执行undo的时候会继续添加undo函数,那样不就回不到最初的状态了?后续一直在撤销undo—撤销撤销undo……2020-11-1114
- 亢(知行合一的路上)依赖的东西要可靠、稳定,也就是接口。 业务与控制分离,控制就可以复用。 把变化频率不同的事物分开。2019-02-264
- 拉欧go里面这个undo功能的实现类似scala里面的trait,也是把一些功能模块(以及实现)单独封装起来,然后以委托或者继承的形式组装到类里面,这种灵活组装的方式确实比java的interface要更方便使用,不同语言之间是有共同点的2019-05-293
- 寻找的人csweb端功能多一点就好了,比如显示文章列表的时候感觉不如app端那么清爽2019-02-063
- Jacob.C再在undo里加个反撤销的功能,就更秀了2021-03-052
- 你为啥那么牛写了半年的go语言了,终于体会到go语言的美感了。那种只要会嘎嘎叫的,我就认为是一只🦆的境界。😃2020-09-152
- Z3sort.Ints(ints) parts := make([]string, 0, len(ints)) for _, i := range ints { 这块要sort吗? 能否直接for (i=0;i<len)print ints[i]2018-02-062
- 小虾米这样写的undo在第一次插入过后,可以无限撤销了吧2018-02-061
收起评论