为了账号安全,请及时绑定邮箱和手机立即绑定

具有相同函数名称的多个“类”

具有相同函数名称的多个“类”

Go
温温酱 2022-05-18 10:33:36
我正在尝试使用 Go 从 myanimelist 和 imdb 中提取一些数据。根据从中收集数据的站点的不同,搜索预计会有很大不同,因此 myanimelist 和 imdb 需要不同的功能(具有相同的名称)。目前我尝试将我的函数总结在一个结构中并通过结构调用它们。但是,这并没有按预期工作。type myAnimeList interface {    search(url string, name string) (string, bool)    getScore(url string, regex string) (string, bool)    getTop(url string, regex string) (string, bool)    getEpisodes(url string, regex string) (string, bool)    getInfo(url string, regex string) (string, bool)    getAired(url string, regex string) (string, bool)}我的计划是最终使用像这样的字典:var SitesAvailable = map[string]interface{}{    "myanimelist":  http.MyAnimeList,    "myanimelist2": http.MyAnimeList,}我是否可以决定我想要激活哪种搜索方法并调用它们。它可能看起来像:SitesAvailable["myanimelist"].search(url, seriesName)我的想法很困惑,对如何做到这一点没有清晰的结构。但我想要的是一本字典,我可以在其中决定应该使用哪种搜索方法以及将 imdb 函数与 myanimelist 函数分开的某种方式。必须在同一个包中。关于如何实现这一点的任何指导?
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

您可能应该研究工厂模式来解决这个问题。您定义了一个接口(就像上面的 myAnimeList 一样,但可能具有更通用的名称),但是您还需要提供两个单独的实现(一个用于 IMDB,另一个用于 myAnimeList)。我希望这会有所帮助!

请参阅此处了解如何在 golang 中实现接口。



查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号