Sobes.tech
Junior — Middle

Como é que a estrutura orientada a objetos é implementada na linguagem Go e como ela difere da clássica?

sobes.tech IA

Resposta da IA

Em Go, a orientação a objetos é implementada através de composição e interfaces, em vez de classes e herança, como na programação orientada a objetos clássica.

As principais diferenças:

  • Ausência de classes: Em Go, não existem classes, em vez disso, usam-se estruturas (struct) que contêm campos e métodos.
  • Composição em vez de herança: Em vez de herdar estruturas, pode-se incluir uma estrutura dentro de outra, o que permite reutilizar código.
  • Interfaces: As interfaces em Go definem um conjunto de métodos que uma estrutura deve implementar. Os tipos implementam automaticamente a interface se tiverem os métodos necessários, sem declaração explícita.

Exemplo:

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())
    }
}

Assim, o Go oferece um modelo de programação orientada a objetos mais simples e flexível, baseado em interfaces e composição, sem as complexidades da herança clássica.