Interfaces Golang | Si parece un pato, nada como un pato…

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/6-Interfaces

Si parece un pato, nada como un pato, y grazna como un pato, entonces probablemente sea un pato. https://es.wikipedia.org/wiki/Test_del_pato

Especialmente este tema es uno de los primeros obstáculos con los que nos enfrentamos al empezar a relacionarnos con Go, aunque una vez que lo entendemos y empezamos a explotar su utilidad, las interfaces se convierten en una de las herramientas de uso diario de todo Gopher.

Effective Go dice:

Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used_here_. Las interfaces en Go proveen una manera de definir el comportamiento de un objeto: Si algo puede hacer esto, entonces puede ser usado de esta forma. https://golang.org/doc/effective_go.html#interfaces

Ejemplo

Adam Savage de **Mythbusters **(Cazadores de Mitos) en el título de su libro dice:

“Cualquier Herramienta es un Martillo”

Así que definamos varias herramientas que podamos probar.

https://play.golang.org/p/KrNNpz214pV

-  Probando un clavo de 8cm

Usando main.Alicatas
Se necesitaron 16 golpes con las alicatas

Usando main.Destornillador
Se necesitaron 27 golpes con el destornillador

Usando main.LlaveDeTuercas
Se necesitaron 14 golpes con la llave de tuercas

Usando main.Piedra
Se necesitaron 10 golpes con la piedra

Usando main.Pincel