Sobes.tech
Junior — Middle

¿Cómo se implementa la estructura orientada a objetos en el lenguaje Go y en qué se diferencia de la clásica?

sobes.tech AI

Respuesta de la IA

En Go, la orientación a objetos se implementa mediante composición e interfaces, en lugar de clases y herencia, como en la programación orientada a objetos clásica.

Las principales diferencias:

  • Ausencia de clases: En Go no existen clases, en su lugar se utilizan estructuras (struct) que contienen campos y métodos.
  • Composición en lugar de herencia: En lugar de heredar estructuras, se puede incluir una estructura dentro de otra, lo que permite reutilizar código.
  • Interfaces: Las interfaces en Go definen un conjunto de métodos que una estructura debe implementar. Los tipos implementan automáticamente la interfaz si tienen los métodos necesarios, sin necesidad de declaración explícita.

Ejemplo:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

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

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

De esta manera, Go ofrece un modelo de programación orientada a objetos más simple y flexible, basado en interfaces y composición, sin las complejidades de la herencia clásica.