← Все этапы
03 · ПРОЕКТИРОВАНИЕУрок 06 из 1240 мин

Структуры и методы

Собираем связанные поля в собственный тип и описываем его поведение.

Данные одной сущности живут вместе

Структура группирует поля одной сущности. Методы позволяют задать вычисления рядом с моделью и выразить ограничение через значение её свойств.

package main

import "fmt"

type Parcel struct {
	Length, Width, Height int
}

func (p Parcel) Volume() int {
	return p.Length * p.Width * p.Height
}

func (p Parcel) Fits(maxVolume int) bool {
	return p.Volume() <= maxVolume
}

func main() {
	parcel := Parcel{Length: 30, Width: 20, Height: 10}
	fmt.Println("объём:", parcel.Volume(), "лимит 7000:", parcel.Fits(7000), "лимит 5000:", parcel.Fits(5000))
}

Методы делают расчёт объёма и проверку ограничения частью модели посылки. Значение передаётся копией; указатель нужен, если операция меняет исходный объект.

Практика

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

В main.go опишите Parcel с длиной, шириной и высотой в сантиметрах, добавьте методы Volume и Fits. Для посылки 30×20×10 выведите объём и результат проверки для лимитов 7000 и 5000 куб. см. Запустите go run main.go.

Проверка результата

Как понять, что получилось

Посылка 30×20×10 имеет объём 6000 кубических сантиметров, проходит лимит 7000 и не проходит лимит 5000.

Структуры и методы | Go | WebSchool · Go