109 | Go编程模式:Functional Options
陈皓
该思维导图由 AI 生成,仅供参考
你好,我是陈皓,网名左耳朵耗子。
这节课,我们来讨论一下 Functional Options 这个编程模式。这是一个函数式编程的应用案例,编程技巧也很好,是目前 Go 语言中最流行的一种编程模式。
但是,在正式讨论这个模式之前,我们先来看看要解决什么样的问题。
配置选项问题
在编程中,我们经常需要对一个对象(或是业务实体)进行相关的配置。比如下面这个业务实体(注意,这只是一个示例):
在这个 Server 对象中,我们可以看到:
要有侦听的 IP 地址 Addr 和端口号 Port ,这两个配置选项是必填的(当然,IP 地址和端口号都可以有默认值,不过这里我们用于举例,所以是没有默认值,而且不能为空,需要是必填的)。
然后,还有协议 Protocol 、 Timeout 和MaxConns 字段,这几个字段是不能为空的,但是有默认值的,比如,协议是 TCP,超时30秒 和 最大链接数1024个。
还有一个 TLS ,这个是安全链接,需要配置相关的证书和私钥。这个是可以为空的。
所以,针对这样的配置,我们需要有多种不同的创建不同配置 Server 的函数签名,如下所示:
因为 Go 语言不支持重载函数,所以,你得用不同的函数名来应对不同的配置选项。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Go 编程模式:Functional Options 本文介绍了Go语言中流行的一种编程模式——Functional Options。文章首先讨论了配置选项问题,指出在Go语言中由于不支持函数重载,需要使用不同的函数名来应对不同的配置选项,或者使用配置对象来解决这个问题。然后介绍了Builder模式的应用,以及其在处理错误时可能存在的麻烦。接着详细介绍了Functional Options的实现方式,通过定义函数类型和使用高阶函数的方式,实现了一组函数来设置对象的属性,从而实现了高度整洁和优雅的代码。最后总结了使用Functional Options带来的6个好处,包括直觉式的编程、高度的可配置化、易于维护和扩展、自文档、新手友好以及避免了令人困惑的问题。整体而言,本文通过实际案例详细介绍了Functional Options的使用方法和优势,对于Go语言开发者具有实际指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》,新⼈⾸单¥98
《左耳听风》,新⼈⾸单¥98
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(18)
- 最新
- 精选
- 汪辉之前看到mq的初始化可选配置的时候有用到Functional Options这个模式,没想到在这里找到源头了。2021-01-198
- Geek_a754be之前在公司自研的微服务框架里面看到大规模使用,原来有个学名叫Functional Options2021-02-0917
- 萧太强了,受益匪浅2021-02-183
- Geek_sevn如沐春风2023-07-30归属地:广东
- 辰星太强了2022-12-04归属地:广东
- 拉欧option 意味选项,本身就有函数的意思2022-04-14
- Geek_Huahui真的牛逼2022-03-14
- 今年也没有猫简单理解 就是一种闭包的组织形式。2022-02-04
- 方勇(gopher)确实很多中间件的传参都这么设计,有时候可能要考虑,函数放在client端,还是server端2021-12-17
- 青阳和函数科里化是一回事吗2021-11-12
收起评论