Size: a a a

2021 May 04

RL

Ragnar Lodbrok in Go-go!
Интерфейс определяется в месте использования.

Если у вас на данный момент http и grpc используют одинаковый интерфейс, то это не значит, что он останется одинаковым всегда
источник

VS

Vladislav Semyachkin in Go-go!
Этот интерфейс предоставляет сервис
И этот сервис может использоваться через разные API
источник

RL

Ragnar Lodbrok in Go-go!
Нет
Интерфейс - это описание "я хочу, чтобы эта штука умела так делать", а не "это то, что умеет делать эта штука"
источник

AK

Anton Kucherov in Go-go!
Вы же сказали "транспорт до этой логики". Если логика меняется, это будет транспорт до другой логики, нет?
источник

VS

Vladislav Semyachkin in Go-go!
Интерфейс - это «я предоставляю такой функционал»
источник

АЛ

Артем Лазаренко... in Go-go!
ребят, привет. У меня тут race'ы повылазили, исправляю и один и которых происходит потому что я делаю
yaml.Marshal(this)
и где-то в кишках reflect происходит чтение некоторых свойств, хотя само свойство помечено так
next    int           yaml:"-"
я не верно пометил?
источник

VS

Vladislav Semyachkin in Go-go!
Ну так логика поменяется для всех транспортов, а не для одного
источник

AK

Anton Kucherov in Go-go!
Так тем более транспорты тогда должны зависеть от реализации логики а не быть абстрагированы :)
источник

AK

Anton Kucherov in Go-go!
Вообще остановитесь и подумайте, какую проблему реально вы решаете. Зачем вам интерфейс в том или ином месте. Чтобы что? Задайте себе 5 раз этот вопрос.
источник

VS

Vladislav Semyachkin in Go-go!
Зачем?
Они должны зависеть от функционала сервиса, который определён через его интерфейс, а не от конкретной его реализации
источник

AK

Anton Kucherov in Go-go!
"Интерфейс" - достаточно абстрактное определение, здесь вы путаете понятие "интефрейс" с ключевым словом  "interface".
источник

AK

Anton Kucherov in Go-go!
Еще раз., остановитесь и подумайте какую проблему вы решаете?
источник

VS

Vladislav Semyachkin in Go-go!
Ещё раз повторяю
Зависимость от абстракции, а не от реализации, помогает ослабить зависимость
источник

AK

Anton Kucherov in Go-go!
Какую проблему вы решаете? "Зависимость помогает ослабить зависимость" - звучит немного странно.
источник

AK

Anton Kucherov in Go-go!
Сформулируйте проблему пожалуйста?
источник

RL

Ragnar Lodbrok in Go-go!
Не совсем.

Интерфейс - это не описание "я это могу", это описание "я это должен уметь"

Лучше на примере:
Есть, допустим, интерфейс, который описывает методы работы с базой данных. В интерфейсе будет метод GetUser(id int)(domain.User,error), но не будет метода Connect( cfg Config.DB) error

Если вы захотите поменять базу данных на другую, то ваш интерфейс, как и сервис от него зависящий не должны поменяться - просто заменяется реализация.
Поэтому и интерфейс должен лежать не в месте реализации, а в месте использования
источник

VS

Vladislav Semyachkin in Go-go!
Зависимость от абстракции слабее, чем от реализации
источник

AK

Anton Kucherov in Go-go!
Сформулируйте проблему пожалуйста? Предположим интерфейсов нет. Есть какой то сервис с бизнес-логикой, есть транспорт. Какая у вас возникла проблема?
источник

DP

Daniel Podolsky in Go-go!
в го это описание “я хочу, чтобы ты умел вот это”
источник

VS

Vladislav Semyachkin in Go-go!
Эм
Если A реализует B, то A не должен уметь B, а умеет. В go утиная типизация
источник