Есть несколько схожих структур, свойства структур отличаются типами. Например, запись разных объектов в json (просто как пример).
type PersonWriter struct {
channel chan *Person
jw *JsonWriter
}
type OrganizationWriter struct {
channel chan *Organization
jw *JsonWriter
}
Структура читает объекты из канала и передает их в JsonWriter (разный экземпляр в каждой структуре - в разные файлы пишет), который принимает для записи interface{} и пишет уже на основе тегов структур. Из-за того, что JsonWriter принимает любые структуры, остальные методы у PersonWriter и OrganizationWriter по сути отличаются только типами полей, вся логика одинаковая.
Таких структур может быть несколько - десяток, например. Очень не хочется дублировать код из-за различий в типах каналов. Как можно избежать дублирования кода без использования?