tgoop.com »
United States »
Библиотека Go для собеса | вопросы с собеседований »
Telegram web »
Post 564
💬 В Go существует возможность скрывать методы с помощью встраивания структур. Как можно сделать так, чтобы метод, реализующий интерфейс, был скрыт при приведении типа, даже если он присутствует у встраиваемой структуры?
Например, есть тип
Теперь, допустим, мы хотим использовать тип
Когда мы вызываем
Хотя
Например, есть тип
A
, который имеет метод Hello()
. Когда мы передаём экземпляр A
в функцию Greet()
, приведение успешно выполнится к интерфейсу Greeter
, и будет вызван метод Hello()
.Теперь, допустим, мы хотим использовать тип
A
, но не хотим, чтобы его метод Hello()
был доступен. Мы можем скрыть его с помощью embedding.Когда мы вызываем
Greet(ANoHello{A: A{}})
, приведение типа к интерфейсу не удаётся.Хотя
ANoHello
встраивает тип A
, который имеет корректный метод Hello()
, приоритет получает неэкспортируемый тип noHello
, который скрывает метод Hello()
.🤔8👍3❤1😁1
tgoop.com/go_interview_lib/564
Create:
Last Update:
Last Update:
💬 В Go существует возможность скрывать методы с помощью встраивания структур. Как можно сделать так, чтобы метод, реализующий интерфейс, был скрыт при приведении типа, даже если он присутствует у встраиваемой структуры?
Например, есть тип
Теперь, допустим, мы хотим использовать тип
Когда мы вызываем
Хотя
Например, есть тип
A
, который имеет метод Hello()
. Когда мы передаём экземпляр A
в функцию Greet()
, приведение успешно выполнится к интерфейсу Greeter
, и будет вызван метод Hello()
.Теперь, допустим, мы хотим использовать тип
A
, но не хотим, чтобы его метод Hello()
был доступен. Мы можем скрыть его с помощью embedding.Когда мы вызываем
Greet(ANoHello{A: A{}})
, приведение типа к интерфейсу не удаётся.Хотя
ANoHello
встраивает тип A
, который имеет корректный метод Hello()
, приоритет получает неэкспортируемый тип noHello
, который скрывает метод Hello()
.BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/564