у которых есть поля Price, Amount(количество в штуках) и SellingPointID(например).
и вот есть толпа разных скидок, которые привязаны к Amount и SellingPointID. Как бы унифицировать расчёт такого, чтобы для каждого из 100500 типов не писать свою функцию подбора скидки?
1) принимать interface{} и делать type switch?
2) сделать какой-то интерфейс возвращающий нужные поля и имплементить его на 100500 структурах?
3) какой-то еще вариант?
type Item interface { Price() int SellingPointID() int } func (t Item) Discount(rate int) (int, error) { // discount logic } не?
Если у вас 100500 структур с одними и теми же полями, выносит их в базовую структуру и нет проблемы
Я бы вот так делал https://play.golang.org/p/_0O5K4NPDrY
Ну может сделать типа мапки, через которую резолвить как считать для конкретного типа, а в типе указать алгоритм расчёта?
Тоесть у тебя есть товар у которого есть цена, и его количество в чеке, а так же торговая точка, у которой определён набор скидок и правил расчёта, а ты хочешь посчитать сумму скидки для чека?
Обсуждают сегодня