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.