烙印99
虚拟继承不仅解决了多重继承的问题,还赋予了我们多态性。package mainimport ( "fmt" "math")type Form interface { Color() string Area() float64}type form struct { color string}func (f *form) Color() string { return f.color}type Circle struct { form radius float64}func (k *Circle) Area() float64 { return math.Pi * k.radius * k.radius}type Rectangle struct { form width, height float64}func (r *Rectangle) Area() float64 { return r.width * r.height}func main() { var forms [2]Form forms[0] = &Circle{ form: form{ "black" }, radius: 5.0, } forms[1] = &Rectangle{ form: form{ "read" }, width: 2.0, height: 3.0, } for _, f := range forms { fmt.Printf("%s: %.2f\n", f.Color(), f.Area()) }}这里我们有一个数组,它们有一些共同点(Color和Area),我们可以在这个数组上迭代调用相同的函数,并且总是会发生正确的事情。这只是多态的优点之一。它在大多数设计模式中扮演着重要的角色。