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:
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