继承普通的旧数据结构
Inheritance with plain old data structs
接口是由它们的功能定义的,而不是由它们包含的数据定义的。我发现,这使得普通旧数据 (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
}
这是好的做法吗?
接口是由它们的功能定义的,而不是由它们包含的数据定义的。我发现,这使得普通旧数据 (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
}
这是好的做法吗?