登录
首页 >  Golang >  Go问答

继承普通旧数据结构

来源:stackoverflow

时间:2024-03-04 22:00:18 155浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《继承普通旧数据结构》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

接口是由其功能定义的,而不是由其包含的数据定义的。我发现,这使得普通旧数据 (pod) 类难以模仿 c++ 风格的继承。我能想到的唯一解决方案是实现一个对所有实现该接口的结构不执行任何操作的方法。考虑以下带有“foosignaturemove”的示例

package main

type foo interface{
   // fooSignatureMove does nothing but allow to mimick inheritence
   fooSignatureMove()
}

type A struct{}
type B struct{}
type C struct{}

func (*A) fooSignatureMove(){}
func (*B) fooSignatureMove(){}


func main(){
  arr := make([]foo, 2)
  arr[0] = &A{}
  arr[1] = &B{}
  arr[2] = &C{} // I do not want this to compile
}

这是好的做法吗?


正确答案


正如 @mkopriva 在评论中解释的那样,这种模式在标准库中确实很常见,所以这可能是正确的选择。例如,参见 ast.ExprexprNode

本篇关于《继承普通旧数据结构》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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