Junior — Middle
¿Cuáles son las ventajas y desventajas de usar interfaces en el lenguaje Go?
sobes.tech AI
Respuesta de la IA
Las interfaces en Go permiten describir comportamientos a través de un conjunto de métodos sin especificar una implementación concreta.
Ventajas:
- Flexibilidad: Los tipos implementan automáticamente la interfaz si tienen los métodos necesarios, sin declaración explícita.
- Facilitan las pruebas: Es fácil reemplazar implementaciones para mocks.
- Simplifican la arquitectura: Permiten escribir código más abstracto y extensible.
Desventajas:
- Falta de un contrato explícito: A veces es difícil saber qué tipos implementan la interfaz, ya que no se declara explícitamente.
- Pueden complicar la depuración: Un uso incorrecto de las interfaces puede llevar a errores en tiempo de ejecución.
Ejemplo de interfaz e implementación:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct {}
func (d Dog) Speak() string {
return "Woof!"
}
type Cat struct {}
func (c Cat) Speak() string {
return "Meow!"
}
func saySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
dog := Dog{}
cat := Cat{}
saySomething(dog)
saySomething(cat)
}