比如现在要添加新的参数 Timeout
这样后续不管新增多少参数,只需要新增配置项并添加独立的设置函数即可轻松扩展,并且不会影响原有函数的参数顺序和个数位置等 。
至此,每个选项是区分开来了,那么怎么作用到我们的 Client 结构体上呢?
首先,配置选项都被提取到了 Options 结构体重,所以我们需要调整一下 Client 结构体的参数
其次,每一个选项函数返回 Option,那么任意多个就是 ...Option,我们调整一下构造函数 NewClient 的参数形式,改为可变参数,不再局限于固定顺序的几个参数 。
然后循环遍历每个选项函数 , 来生成Client结构体的完整配置选项 。
那么怎么调用呢?对于调用方而已,直接在调用构造函数NewClient()的参数内添加自己需要的设置函数(WithXXX)即可
当需要设置超时参数,直接添加 WithTimeout即可,比如设置3秒的超时
配置选项的位置可以任意设置 , 不需要受常规的固定参数顺序约束 。
可以看到,这种实践模式主要作用于配置选项,利用函数支持的特性来实现的,为此得名 Functional Options Pattern,优美的中国话叫做「函数选项模式」 。
最后, 我们总结回顾一下在Go语言中函数选项模式的优缺点
go语言相册制作实训总结的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、go语言相册制作实训总结的信息别忘了在本站进行查找喔 。
- 将数据保存到文件中c语言 将数据保存到mongodb
- 罗布人村天气 mysql语言具有的功能
- redis编程语言 redis对应c语言
- redis一般和什么语言一起开发 和redis类似的编程
- mongodb采用什么语言 mongodb的设计采用什么
- c连接mysql数据库 c连接mysql报错
- mongodb底层数据结构 mongodb底层语言
- mongodb用什么语言写的 mongodb开源吗
- mongodb是做什么的 mongodb是什么语言写的
- 易语言调用mysql存储过程 易语言mysql高并发
