Menu
Coddy logo textTech

Structs como Classes

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

Structs em Go servem ao mesmo propósito que classes em outras linguagens. Elas agrupam dados relacionados em um único tipo.

Defina uma struct com múltiplos tipos de campos

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

Crie uma instância usando nomes de campos

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

Acessar e modificar campos

fmt.Println(car.Brand) // Toyota
fmt.Println(car.Year)  // 2023

car.Price = 27000.00   // Modificar um campo
fmt.Println(car.Price) // 27000

Structs podem conter outras structs

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

Structs agrupam campos relacionados. Você acessa os campos com o operador de ponto, e pode aninhar structs dentro de outras structs para construir modelos de dados complexos.

challenge icon

Desafio

Médio

Defina uma struct Profile com os seguintes campos:

  • Name — string
  • Email — string
  • Age — int
  • Role — string

Folha de consulta

Structs em Go agrupam dados relacionados em um único tipo, semelhante a classes em outras linguagens.

Defina uma struct com múltiplos tipos de campos:

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

Crie uma instância usando nomes de campos:

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

Acesse e modifique campos usando o operador de ponto:

fmt.Println(car.Brand) // Toyota
car.Price = 27000.00   // Modifica um campo

Structs podem conter outras structs (structs aninhadas):

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

Experimente você mesmo

package main

import "fmt"

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

    p := Profile{
        Name:  name,
        Email: email,
        Age:   age,
        Role:  role,
    }

    fmt.Printf("Name: %s\n", p.Name)
    fmt.Printf("Email: %s\n", p.Email)
    fmt.Printf("Age: %d\n", p.Age)
    fmt.Printf("Role: %s\n", p.Role)
}
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