Данные одной сущности живут вместе
Структура группирует поля одной сущности. Методы позволяют задать вычисления рядом с моделью и выразить ограничение через значение её свойств.
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))
}
Методы делают расчёт объёма и проверку ограничения частью модели посылки. Значение передаётся копией; указатель нужен, если операция меняет исходный объект.