У меня есть структура, которую реализуют два других объекта. В этом случае typeA и B repo's. Здесь есть код инициализации, который представлен здесь как эллипсы. Код инициализации полностью дублируется между обоими конструкторами и не имеет большого значения, в то время как у меня есть только два dbRepo
, но по мере того, как я создаю больше, я буду немного беспокоиться о плохой практике. Есть ли способ обобщить это с помощью интерфейса?Общая структура построения структуры Golang
type dbRepo struct {
foo string
bar string
}
type typeARepo dbRepo
type typeBRepo dbRepo
func newTypeARepo(foo, bar string) {
...
}
func newTypeBRepo(foo, bar string) {
...
}
Ваш пример кода не выглядит как что-то можно было бы сделать в дороге. Но, чтобы быть уверенным, не могли бы вы немного разобраться в своем случае? Например, почему два подтипа dbRepo? – wldsvc
Как и где принято решение о создании типа A или B? – wldsvc
Есть два подтипа, потому что каждый из них имеет разные функции, которые будут называться на них, в зависимости от типа репо, которым они являются. Например, вызов в пользовательскую базу данных вместо базы данных элементов. У меня будут разные запросы и функции, которые я хочу сделать на основе репозитория. Создание и назначение выполняются в основной функции в другом месте. Все это свободно следит за чистой архитектурой в Go. – user2402831