Menu
Coddy logo textTech

Structs como clases

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy — lección 6 de 107.

Las estructuras (structs) en Go sirven para el mismo propósito que las clases en otros lenguajes. Agrupan datos relacionados en un solo tipo.

Define una estructura con múltiples tipos de campos

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

Crea una instancia utilizando nombres de campos

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

Acceder y modificar campos

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

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

Las estructuras pueden contener otras estructuras

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

Las structs agrupan campos relacionados. Accedes a los campos con el operador de punto, y puedes anidar structs dentro de otras structs para construir modelos de datos complejos.

challenge icon

Desafío

Intermedio

Define una estructura Profile con los siguientes campos:

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

Hoja de referencia

Las estructuras (structs) en Go agrupan datos relacionados en un solo tipo, de manera similar a las clases en otros lenguajes.

Define una estructura con múltiples tipos de campos:

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

Crea una instancia utilizando los nombres de los campos:

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

Accede y modifica los campos utilizando el operador de punto:

fmt.Println(car.Brand) // Toyota
car.Price = 27000.00   // Modify a field

Las estructuras pueden contener otras estructuras (estructuras anidadas):

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

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos