github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/Profesional/3-Reto/AreaInterface.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"math"
     6  )
     7  
     8  const pi float64 = math.Pi
     9  
    10  type Area interface {
    11  	area() float64
    12  }
    13  
    14  type Cuadrado struct {
    15  	ancho float64
    16  	altura float64
    17  }
    18  
    19  type Circulo struct {
    20  	perimetro float64
    21  }
    22  
    23  func (cua * Cuadrado) area() float64 {
    24  	return cua.ancho * cua.altura
    25  }
    26  
    27  func (cir * Circulo) area() float64 {
    28  	return pi * math.Pow(cir.perimetro, 2.0)
    29  }
    30  
    31  func encontrarArea(a Area) {
    32  	fmt.Println(a.area())
    33  }
    34  
    35  func main() {
    36  
    37  	circulo := Circulo{35.6}
    38  	encontrarArea(&circulo)
    39  
    40  	cuadrado := Cuadrado{20.3, 10.6}
    41  	encontrarArea(&cuadrado)
    42  }