Menu
Coddy logo textTech

Структуры как классы

Часть раздела Объектно-ориентированное программирование путешествия по GO на Coddy — урок 6 из 107.

Структуры в Go служат той же цели, что и классы в других языках. Они объединяют связанные данные в один тип.

Определите структуру с несколькими типами полей

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

Создайте экземпляр, используя имена полей

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

Доступ и изменение полей

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

car.Price = 27000.00   // Изменение поля
fmt.Println(car.Price) // 27000

Структуры могут содержать другие структуры

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

Структуры группируют связанные поля вместе. Вы обращаетесь к полям с помощью оператора точки, и вы можете вкладывать структуры в другие структуры для создания сложных моделей данных.

challenge icon

Задание

Средне

Определите структуру Profile со следующими полями:

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

Шпаргалка

Структуры в Go объединяют связанные данные в один тип, подобно классам в других языках.

Определите структуру с несколькими типами полей:

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

Создайте экземпляр, используя имена полей:

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

Обращайтесь к полям и изменяйте их с помощью оператора точки:

fmt.Println(car.Brand) // Toyota
car.Price = 27000.00   // Изменение поля

Структуры могут содержать другие структуры (вложенные структуры):

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

Попробуйте сами

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 iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование