На хабре ещё в две тысячи десятом году на заре выхода этого языка вышла статья по использованию паттернов, при чём в статье рассматриваются три альтернативных подхода к упрощению использования класса, с конструктором со многими параметрами.
Паттерн Builder (Строитель) отделяет конструкцию сложного объекта от его представления, так что один и тот же процесс строительства может создать разные представления.
Обычно в Go для достижения того же эффекта используется struct конфигурации, но передача struct в builder метод заполонит код шаблонными проверками if cfg.Field != nil {...}
Вот реализация всего этого дела:
package car
type Speed float64
const (
MPH Speed = 1
KPH = 1.60934
)
type Color string
const (
BlueColor Color = "blue"
GreenColor = "green"
RedColor = "red"
)
type Wheels string
const (
SportsWheels Wheels = "sports"
SteelWheels = "steel"
)
type Builder interface {
Color(Color) Builder
Wheels(Wheels) Builder
TopSpeed(Speed) Builder
Build() Interface
}
type Interface interface {
Drive() error
Stop() error
}
На stack overflow буквально год назад был создан топик по твоей теме - How to use builder pattern to construct a struct which dynamically implements interfaces. Так что можешь зайти, глянуть, если, конечно, умеешь в английский.
Спасибо большое, ребят, вроде уже стало намного понятнее. Сейчас ещё посижу почитаю то, что вы мне накидали. Надеюсь, смогу разобраться и написать лабу по этой теме. Пожелайте мне удачи.