{}
type something struct {
whatever
}
Я так понимаю, го просто сам догадывается, что whatever - это структура и интерпретирует эту запись как-то так что ли?
type something struct {
whatever whatever
}
Это я не сам придумал, столкнулся во время разработки апи на grpc
да. встраивание(embedding) почитай
Спасибо большое 👌
Почитал, мне показалось, что все понял, но). Как трактовать такой код? type Server interface { mustEmbedSmth() } type Smth struct {} func (Smth) mustEmbedSmth() {}
Структура Smth имплементирует поведение интерфейса Server благодаря методу mustEmbedSmth
А какой практический смысл имплементировать пустой функцией?
для моков мб
🤯 Вообще не понял
ну уж не знаю для чего такой код был сгенерен. но иногда создают такие стракты с пустыми методами для моков
Чтобы можно было подсовывать в интерфейс только структуры у которых эта функция реализована. Другими словами чтобы ограничить использование неявного разрешения интерфейсов.
Вот как реализуется этот интерфейс на практике: type myServer struct { protos.UnimplementedMyServer }
Этот метод нужен компилятору. Точнее как нужен. За счет того что он описан в интерфейсе, там где используется этот интерфейс нельзя будет подсунуть любой другой интерфейс с такими же публичными методами как у исходного
Ну объясни своими словами. Если я не так объяснил. Вопрос простой: Зачем в интерфейсах объявляют пустой приватный метод. Что это дает?
Для типовой безопасности. Если у вас есть переменная, которой вы хотите присвоить значение из некоторого набора типов, то можно объявить фантомный интерфейс, не предполагающий реальных реализаций
Тот же протобаф для any такую уловку использует
Обсуждают сегодня