github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/Profesional/Structures/Interface.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  type Animal interface {
     6  	mover() string
     7  }
     8  
     9  type Perro struct {}
    10  type Pez struct {}
    11  type Pajaro struct {}
    12  
    13  func (* Perro) mover() string {
    14  	return "Soy perro y camino"
    15  }
    16  
    17  func (* Pez) mover() string {
    18  	return "Soy pez y nado"
    19  }
    20  
    21  func (* Pajaro) mover() string {
    22  	return "Soy pajaro y vuelo"
    23  }
    24  
    25  func moverAnimal(animal Animal) {
    26  	fmt.Println(animal.mover())
    27  }
    28  
    29  func main() {
    30  
    31  	perro := Perro{}
    32  	moverAnimal(&perro)
    33  
    34  	pez := Pez{}
    35  	moverAnimal(&pez)
    36  
    37  	pajaro := Pajaro{}
    38  	moverAnimal(&pajaro)
    39  }