Задача · Итоговый проект · урок 7 из 7
Задача: склад
Напишите тип Inventory — склад, который считает единицы каждого товара. Храните количества в map[string]int, поле добавьте сами. Функция func NewInventory() *Inventory создаёт пустой склад, а методы такие:
func (inv *Inventory) Add(name string, qty int)кладёт на складqtyединиц товараname;func (inv *Inventory) Take(name string, qty int) errorзабирает их и возвращаетnil;func (inv *Inventory) Count(name string) intвозвращает, сколько единиц товара лежит на складе;func (inv *Inventory) Names() []stringвозвращает названия товаров по алфавиту.
Заготовка объявляет две ошибки. Если товара name нет на складе, Take возвращает ErrUnknownItem, а если единиц меньше qty — ErrNotEnough; в обоих случаях склад не меняется.
- после
Add("apple", 5)иAdd("apple", 3):Count("apple")→8 - когда
Count("pear")равно2:Take("pear", 3)→ErrNotEnough, аCount("pear")остаётся2 - после
Add("pear", 2)иAdd("apple", 5):Names()→[apple pear]
Ограничения: qty положительное; Count для неизвестного товара возвращает 0; товар, забранный целиком, исчезает со склада, и Names его не возвращает.
Не добавляйте лишних импортов, если в задаче это прямо не сказано.
Подпишись, чтобы пройти курс
Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.