次の Go コード:
package main
import "fmt"
type Polygon struct {
sides int
area int
}
type Rectangle struct {
Polygon
foo int
}
type Shaper interface {
getSides() int
}
func (r Rectangle) getSides() int {
return 0
}
func main() {
var shape Shaper = new(Rectangle)
var poly *Polygon = new(Rectangle)
}
このエラーが発生します:
cannot use new(Rectangle) (type *Rectangle) as type *Polygon in assignment
Java でできるように、Rectangle インスタンスを Polygon 参照に割り当てることはできません。この背後にある理論的根拠は何ですか?