Size: a a a

2020 March 29

DO

Digital Owl in Go-go!
Ага, сделать интерфейс, хорошо... Есть например интерфейс

type ModuleConfigInterface interface{}

и, как я понял, две структуры

type Module1Config struct {
 ModuleConfigInterface
 a string
 b int
}

type Module2Config struct {
 ModuleConfigInterface
 c bool
}
источник

АП

Александр Попов in Go-go!
но это только для вариантов если у вас конфиг на лету не меняется
источник

ЕО

Евгений Омельченко in Go-go!
Александр Попов
есть еще вариант, конфиг принимать в конструкторе структры, а Configure вообще отпилить
Во это хороший вариант
источник

АП

Александр Попов in Go-go!
Digital Owl
Ага, сделать интерфейс, хорошо... Есть например интерфейс

type ModuleConfigInterface interface{}

и, как я понял, две структуры

type Module1Config struct {
 ModuleConfigInterface
 a string
 b int
}

type Module2Config struct {
 ModuleConfigInterface
 c bool
}
не путайте интерфейс и интерфейс :)
источник

ЕО

Евгений Омельченко in Go-go!
Александр Попов
но это только для вариантов если у вас конфиг на лету не меняется
А если меняется на лету, то как тот кто меняет может узнать что именно менять?
источник

DO

Digital Owl in Go-go!
Александр Попов
не путайте интерфейс и интерфейс :)
Ну вот потому я и пришёл, что запутался.
источник

ЕО

Евгений Омельченко in Go-go!
Надо исходить из кейсов использования всегда
источник

DO

Digital Owl in Go-go!
Не, структура конфигов у меня статична
источник

АП

Александр Попов in Go-go!
есть interface{} он же пустой контейнер в который можно положить любой тип, а есть тип интерфейс
источник

DO

Digital Owl in Go-go!
Просто у каждого модуля своя
источник

ЕО

Евгений Омельченко in Go-go!
Тогда вообще в New пихните
источник

ЕО

Евгений Омельченко in Go-go!
Зачем вот эти вот Configure?
источник

DO

Digital Owl in Go-go!
Евгений Омельченко
Зачем вот эти вот Configure?
Легаси мышления от си >___>
источник

DO

Digital Owl in Go-go!
Но я стараюсь
источник

АП

Александр Попов in Go-go!
Digital Owl
Просто у каждого модуля своя
func NewModule1(cfg *Module1Config) *Module1 {
    return &Module1{
            cfg: cfg,
    }
}
источник

ЕО

Евгений Омельченко in Go-go!
func NewModule1 (c Module1Config) Modulface {
}
источник

ЕО

Евгений Омельченко in Go-go!
Александр Попов
func NewModule1(cfg *Module1Config) *Module1 {
    return &Module1{
            cfg: cfg,
    }
}
Ну или так, да. Но я обычно сразу прячу за интерфейс :)
источник

АП

Александр Попов in Go-go!
Евгений Омельченко
func NewModule1 (c Module1Config) Modulface {
}
возращать из конструктора интерфейс - моветон, возращаем всегда реализацию
источник

DO

Digital Owl in Go-go!
Хм, просто обернуть :think:
источник

ЕО

Евгений Омельченко in Go-go!
Александр Попов
возращать из конструктора интерфейс - моветон, возращаем всегда реализацию
Поясни почему
источник