Sobes.tech
Junior — Middle

¿Puedes explicar el principio de herencia y cómo se implementa en el lenguaje Go?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go no existe herencia clásica como en otros lenguajes orientados a objetos. En su lugar, Go utiliza composición y inclusión (embedding) para reutilizar código y ampliar funcionalidades.

La inclusión permite incorporar un tipo (estructura) dentro de otro, y los métodos del tipo incluido se vuelven accesibles para el tipo externo, lo que se asemeja a la herencia.

Ejemplo:

type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Incluimos Animal en Dog

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "¡Guau!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)       // Acceso al campo Animal
    fmt.Println(dog.Speak())    // Método sobrescrito
}

De esta forma, Go logra un efecto similar a la herencia mediante composición e inclusión, evitando las complejidades de una jerarquía clásica.