登录
首页 >  Golang >  Go问答

go中没有方法的多态

来源:stackoverflow

时间:2024-02-27 21:54:24 451浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《go中没有方法的多态》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

注意:我正在将此问题编辑为一个具体示例,说明为什么我要这样做,这就是为什么某些答案在上下文中可能不再有意义。

我正在编写一些从输入传递数据的代码。数据采用标签的形式,标签具有其包含的数据类型的标识符,然后是数据。

不幸的是,我无法控制输入,并且事先不知道其中会包含哪些标签,一个可能是整数,另一个可能是字符串,还有一个可能是整数数组。

当我需要像处理同一类型一样处理所有标签时,就会出现问题,例如,如果我有一个接受或返回标签的函数的标签切片。

到目前为止,我看到的解决方案是使用空接口定义切片/函数,这将允许我这样做,但是这有点不可取,因为它不会告诉使用该包的其他人任何信息类型是预期的,但也有点违背了首先使用类型化语言的意义。

然而,接口似乎是这里的解决方案,我希望有一个 tag 接口来传递,但这确实需要我在它们上定义方法,而且它们实际上不需要任何方法。

我当前的解决方案如下所示

type Tag interface{
    implementTag()
}

type TagInt int
func (tag TagInt) implementTag() {}

type TagString string
func (tag TagInt) implementTag() {}

虽然这确实有效并解决了我的问题,但必须为此定义虚拟方法感觉非常错误。

所以我的问题总结如下:有没有什么方法可以定义某个东西是 tag 而无需定义虚拟方法?


解决方案


你不能那样做。抱歉。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>