为此我们封装go语言函数与接口了一个独立的包 xxx-go-sdk 以便维护和对接使用.
其中核心的部分是自定义HTTP Client,如下:
一些平台会要求appKey/appSecret等信息,所以Client结构体就变成了这样,这时参数还比较少, 而且是必填的参数,我们可以提供构造函数来明确指定 。
看起来很满足,但是当我们需要增加一个 Timeout 参数来控制超时呢?
或许你会说这还不简单 , 像下面一样再加一个参数呗
那再加些其他的参数呢?那构造函数的参数是不是又长又串 , 而且每个参数不一定是必须的,有些参数我们又会考虑默认值的问题 。
为此,勤劳但尚未致富的 gophers 们使用了总结一种实践模式
首先提取所有需要的参数到一个独立的结构体 Options , 当然你也可以用 Configs 啥的.
然后为每个参数提供设置函数
这样我们就为每个参数设置了独立的设置函数 。返回值func(*Options)看着有点不友好,我们提取下定义为单个Option调整一下代码
当我们需要添加更多的参数时,只需要在 Options 添加新的参数并添加新参数的设置函数即可 。
比如现在要添加新的参数 Timeout
这样后续不管新增多少参数,只需要新增配置项并添加独立的设置函数即可轻松扩展,并且不会影响原有函数的参数顺序和个数位置等 。
至此,每个选项是区分开来了,那么怎么作用到我们的 Client 结构体上呢?
首先,配置选项都被提取到了 Options 结构体重,所以我们需要调整一下 Client 结构体的参数
其次 , 每一个选项函数返回 Option,那么任意多个就是 ...Option,我们调整一下构造函数 NewClient 的参数形式 , 改为可变参数,不再局限于固定顺序的几个参数 。
然后循环遍历每个选项函数,来生成Client结构体的完整配置选项 。
那么怎么调用呢?对于调用方而已,直接在调用构造函数NewClient()的参数内添加自己需要的设置函数(WithXXX)即可
当需要设置超时参数,直接添加 WithTimeout即可,比如设置3秒的超时
配置选项的位置可以任意设置,不需要受常规的固定参数顺序约束 。
可以看到 , 这种实践模式主要作用于配置选项,利用函数支持的特性来实现的,为此得名 Functional Options Pattern,优美的中国话叫做「函数选项模式」 。
最后, 我们总结回顾一下在Go语言中函数选项模式的优缺点
【接口测试】Go语言进行简单的接口测试在正常的测试中,当我们需要进行接口测试时,通常使用接口调试工具 , 如postman进行接口测试
目前我在尝试使用Go语言进行接口测试,使用的库均为Go自带的库 。
注:当前采用的接口为时事新闻接口,每天可以请求100次,需要的同学,可以自行使用 。
关于go语言函数与接口和go语言接口做参数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 圣岛服务器,圣岛入口在哪里
- mysql修改数据的语句,mysql修改语句汇总
- html同一行标签,html 同行
- 钉钉电脑直播怎样设置静音,电脑钉钉直播可以静音吗
- vb.net函数使用的简单介绍
- 苹果ios15系统更新如何更新,苹果ios15咋更新
- 主机电脑怎么加硬盘内存,主机怎么增加硬盘
- css3d图片木马旋转教程,css照片旋转木马
- vb.net可以做网站么 vbnet webbrowser