Sobes.tech
Junior — Middle

¿Se puede implementar un mecanismo de herencia en el lenguaje Go?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go no existe herencia clásica, como en lenguajes orientados a objetos como Java o C++. En su lugar, Go utiliza composición y embebido (embedding) de estructuras para reutilizar código y ampliar funcionalidades.

Por ejemplo, se puede incrustar una estructura en otra, y los métodos de la estructura incrustada estarán disponibles a través de la estructura externa:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "dice")
}

type Dog struct {
    Animal // embebido de la estructura Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // llamará al método Speak de la estructura Animal
}

De esta forma, en Go se logra un comportamiento similar a la herencia, pero se implementa mediante composición, lo que favorece un diseño más flexible y sencillo.