interfaces.go 482 B

12345678910111213141516171819202122232425262728293031
  1. package main
  2. import "fmt"
  3. type Shaper interface {
  4. Area() float32
  5. // Perimeter() float32
  6. }
  7. type Square struct {
  8. side float32
  9. }
  10. func (sq *Square) Area() float32 {
  11. return sq.side * sq.side
  12. }
  13. func main() {
  14. sq1 := new(Square)
  15. sq1.side = 5
  16. var areaIntf Shaper
  17. areaIntf = sq1
  18. // shorter, without separate declaration:
  19. // areaIntf := Shaper(sq1)
  20. // or even:
  21. // areaIntf := sq1
  22. fmt.Printf("The square has area: %f\n", areaIntf.Area())
  23. }
  24. // The square has area: 25.000000