ShapeInterface.PrintArea() Circle, PrintArea() Circle. PrintArea() Rectangle, Shape.
, . Go is () - : , ; , struct, interface, .
, , : , PrintArea() "overridden" Area(), Go .
Shape.PrintArea() - Shape.Area(), , . Shape , , , "" .
: , x.f ( f ), , . :
f f T, f T. , f, T.x T *T, T , x.f T, a f.
Circle: si.PrintArea() Circle.PrintArea(), :
func (c *Circle) PrintArea() {
fmt.Printf("%s : Area %v\r\n", c.GetName(), c.Area())
}
c.Area() , c *Circle, *Circle , .
PrintArea(si) si.Area(). si Cicle Area() Circle, .
Rectangle si.PrintArea() Shape.PrintArea(), PrintArea() Rectangle ( *Rectangle). Shape.PrintArea() Shape.Area() Rectangle.Area() - , Shape Rectangle. ,
Rectangle1 : Area 0
Rectangle1 : Area 20.
PrintArea(si) ( Rectangle), si.Area(), Rectangle.Area(), .