首页 > 其他分享 >Go语言中的匿名接口

Go语言中的匿名接口

时间:2023-08-10 17:24:22浏览次数:32  
标签:接口 命名 匿名 文档 使用 Go

匿名接口在 Go 语言中提供了一种定义接口但不给它命名的方式。使用它们有其优缺点:

优点:

  1. 简洁性:在你只需要在一个地方使用接口时,匿名接口可以避免创建一个新的命名接口。
  2. 局部性:匿名接口定义在使用它的地方,这使得读代码的人可以立即看到所需的方法,而不必在代码的其他地方查找命名接口的定义。

缺点:

  1. 不可重用:由于匿名接口没有名字,你不能在其他地方重复使用它。
  2. 可读性降低:对于大型的接口或在项目中广泛使用的接口,使用匿名接口可能会使代码变得难以阅读和维护。
  3. 文档困难:命名接口可以通过 GoDoc 很好地文档化,但匿名接口则不行。
  4. 重构困难:如果你发现需要在多个地方使用相同的匿名接口,将其转换为命名接口可能会涉及大量的修改。

最佳实践:

  1. 有限的使用:只在确实需要的地方使用匿名接口,如一些非常特定的函数参数或短生命周期的局部变量。
  2. 避免复杂性:如果接口有多个方法或预计在未来可能会扩展,最好使用命名接口。
  3. 文档化:尽管匿名接口不能像命名接口那样被 GoDoc 自动文档化,但你应该在其旁边写上注释,解释它的用途和行为。
  4. 及时重构:如果你发现自己在多个地方复制和粘贴相同的匿名接口,考虑将其重构为一个命名接口。

总的来说,匿名接口在某些特定的场景下可能很有用,但在大多数情况下,为接口命名会更好,因为它提供了更好的文档、可读性和可维护性。

标签:接口,命名,匿名,文档,使用,Go
From: https://www.cnblogs.com/tangjicheng/p/17620948.html

相关文章

  • Go语言中字符串处理
    Go语言为字符串处理提供了丰富的功能。以下是处理字符串的一些常见方法和函数:基本操作:获取字符串长度:len(str)字符串连接:str1+str2访问特定字符(字节):str[index]字符串包(strings包):检查字符串是否包含子串:strings.Contains(str,substr)字符串比较:strings.Com......
  • Docker安装gogs
    拉取镜像dockerpullgogs/gogs创建目录mkdir-p/usr/local/gogs创建容器dockerrun--name=gogs-d-p10022:22-p10880:3000-v/usr/local/gogs:/datagogs/gogs在mysql创建数据库gogs(只创建数据库即可,后面会配置连接参数并自动生成很多表)访问gogs安装软件:http://192.168.101......
  • IDEA提示cannot find declaration to go to解决方案
    参考:https://www.cnblogs.com/lizm166/p/16468953.html原因:未设置源跟解决方法:设置源跟......
  • 链接Mongodb报错Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1
    解决方案在连接数据库字符串后面添加authSource=admin  "MongoDB":{"Host":"mongodb://touchadmin:[email protected]:27017/TouchAdmin?authSource=admin","DbName":"TouchAdmin"} useTouchAdmindb.cre......
  • - Django操作cookie - Django操作session - CBV添加装饰器 - 中间件 - csrf跨站请求
    Django操作cookie设置cookie:对象点set_cookie()获取cookie:request点COOKIE点getset_cookie('key','value',max_age=5,expires=5)参数:KEY:k值value:V值max_age=None,超时时间cookie需要延续的时间(以秒为单位)如果参数是\None``,这个cookie会延续到浏览器关闭为止expires=No......
  • Go面经 | 成都Go面试这么卷?卷王介绍:游戏行业 3年经验 20k+
    Go最新面经分享:算法、并发模型、缓存落盘、etcd、actor模型、epoll等等...本文先分享2段面经,文末总结了关键问题的复盘笔记。一定要看到最后!求职者情况分享一下好友的最新面经。简单说下这位好友的情况:坐标成都,游戏行业,3年开发经验,最近2年做Go语言开发,1年Java/PHP工作经验。......
  • API 接口设计规范
    概述这篇文章分享API接口设计规范,目的是提供给研发人员做参考。规范是死的,人是活的,希望自己定的规范,不要被打脸。路由命名规范动作前缀备注获取getget{XXX}获取getget{XXX}List新增addadd{XXX}修改updateupdate{XXX}保存savesave{XXX}删除deletedelete{XXX}上传uploadupload{XXX}......
  • API 接口设计规范
     概述这篇文章分享API接口设计规范,目的是提供给研发人员做参考。规范是死的,人是活的,希望自己定的规范,不要被打脸。路由命名规范动作前缀备注获取getget{XXX}获取getget{XXX}List新增addadd{XXX}修改updateupdate{X......
  • Django操作cookie,Django操作session,Django中的Session配置,CBV添加装饰器,中间件,cs
    Django操作cookiecookie参数:●key,键●value=’’,值●max_age=None,超时时间cookie需要延续的时间(以秒为单位)如果参数是\None``,这个cookie会延续到浏览器关闭为止expires=None,超时时间(IErequiresexpires,sosetitifhasn’tbeenalready.)path=’/‘,Co......
  • 愣着干嘛?视频串讲K8S+Go+ELK技术栈!来白嫖啊
    欢迎白嫖~视频地址:https://www.bilibili.com/video/BV1ZS4y1B7dM/视频地址:https://www.bilibili.com/video/BV1ZS4y1B7dM/视频地址:https://www.bilibili.com/video/BV1ZS4y1B7dM/......