Menu
Coddy logo textTech

Introdução a OOP em Go

Parte da seção Programação Orientada a Objetos do Journey de GO da Coddy — lição 5 de 107.

Go não possui classes, mas alcança a programação orientada a objetos através de structs e methods. Uma struct agrupa dados relacionados, e methods definem o comportamento associado a essa struct.

Defina uma struct para armazenar dados

type Dog struct {
    Name string
    Age  int
}

Anexe um método à struct

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Crie uma instância e use-a

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // Saída: Buddy says Woof!
    fmt.Println(myDog.Age)    // Saída: 3
}

Em Go, a parte (d Dog) antes do nome do método é chamada de receptor (receiver). Ela conecta o método à struct Dog, de forma semelhante a como métodos pertencem a classes em outras linguagens.

challenge icon

Desafio

Fácil

Crie uma struct Cat com um método para praticar a abordagem de OOP do Go:

  • Defina uma struct Cat com os campos Name (string) e Age (int)
  • Adicione um método Speak que retorna o nome do gato seguido por " says Meow!"

Folha de consulta

Go alcança a programação orientada a objetos através de structs e métodos. Uma struct agrupa dados relacionados, e métodos definem o comportamento anexado a essa struct.

Defina uma struct para conter dados:

type Dog struct {
    Name string
    Age  int
}

Anexe um método à struct usando um receiver:

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

A parte (d Dog) antes do nome do método é o receiver, que conecta o método à struct.

Crie uma instância e use-a:

myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Saída: Buddy says Woof!
fmt.Println(myDog.Age)    // Saída: 3

Experimente você mesmo

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos