Sobes.tech
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)
}