Interfaces

Un contrato, no una clase

Ya tienes structs (Walker, Booking) y métodos colgados de ellos. Una interface es la siguiente idea: una lista con nombre de firmas de métodos — un contrato. Cualquier cosa que tenga esos métodos satisface la interface, y puede usarse en cualquier lugar donde esa interface se espere.

En Swift escribirías un protocol y luego dirías struct Walker: Pricer. Go es distinto en un aspecto grande, y es lo que hay que interiorizar en esta lección: no hay palabra clave implements. Nunca declaras que un tipo satisface una interface. Si el tipo tiene los métodos, la satisface — automáticamente, en silencio, en todas partes.

A esto se le llama satisfacción estructural o implícita. La interface describe una forma; cualquier tipo con esa forma encaja.