Один из вопросов, которые любят задавать кандидатам с самого начала собеседования - это "Как реализовано ООП в go?".
Ответ: Сейчас мы не будем вдаваться в то, что такое ООП. Об этом можно почитать на Хабре на других ресурсах. Информации про это великое множество.
На сам вопрос можно ответить, что в go нет классической реализация ООП, так как он не объектно-ориентированный язык. При этом в go есть свои приближения к этой реализации. Сейчас поговорим об этом конкретнее.
@golang_interview
Ответ: Сейчас мы не будем вдаваться в то, что такое ООП. Об этом можно почитать на Хабре на других ресурсах. Информации про это великое множество.
На сам вопрос можно ответить, что в go нет классической реализация ООП, так как он не объектно-ориентированный язык. При этом в go есть свои приближения к этой реализации. Сейчас поговорим об этом конкретнее.
@golang_interview
"Как реализовано наследование?"
Ответ
Как такового наследования в go нет, но при этом у нас есть структуры - это специальные типы, в которые мы можем включать другие типы, в том числе такие же структуры. При этом методы дочерних структур родительская структура также будет наследовать.
Отсюда интервьюер может задать вопрос: "Что будет, если и в родительской и дочерней структуре есть реализация методов с одинаковым названием?" Ответ на этот вопрос такой: "Реализация родительского метода будет переписана реализацией дочернего метода".
@golang_interview
Ответ
Как такового наследования в go нет, но при этом у нас есть структуры - это специальные типы, в которые мы можем включать другие типы, в том числе такие же структуры. При этом методы дочерних структур родительская структура также будет наследовать.
Отсюда интервьюер может задать вопрос: "Что будет, если и в родительской и дочерней структуре есть реализация методов с одинаковым названием?" Ответ на этот вопрос такой: "Реализация родительского метода будет переписана реализацией дочернего метода".
@golang_interview
"Как реализована Инкапсуляция в go?"
Инкапсуляция в go - это возможность задавать переменным, функциям и методам первую букву названия в верхнем или нижнем регистре. Соответственно нижний регистр будет значить, что переменная, функция или метод доступна только в рамках пакета. Тогда как верхний регистр даст доступ к переменной, функции или методу за рамками пакета.
@golang_interview
Инкапсуляция в go - это возможность задавать переменным, функциям и методам первую букву названия в верхнем или нижнем регистре. Соответственно нижний регистр будет значить, что переменная, функция или метод доступна только в рамках пакета. Тогда как верхний регистр даст доступ к переменной, функции или методу за рамками пакета.
@golang_interview
"Как реализован полиморфизм в go?"
Полиморфизм в go реализован с помощью интерфейсов. Что такое интерфейс мы будем разбираться ниже. Основная идея заключается в том, что мы можем объявить интерфейсы (контракты на определённое поведение) для наших типов. При этом, для типов мы должны реализовать методы, удовлетворяющие этим интерфейсам. Таким образом, мы сможем работать со всем набором типов, у которых реализовали интерфейсы, как с единым интерфейсным типом.
@golang_interview
Полиморфизм в go реализован с помощью интерфейсов. Что такое интерфейс мы будем разбираться ниже. Основная идея заключается в том, что мы можем объявить интерфейсы (контракты на определённое поведение) для наших типов. При этом, для типов мы должны реализовать методы, удовлетворяющие этим интерфейсам. Таким образом, мы сможем работать со всем набором типов, у которых реализовали интерфейсы, как с единым интерфейсным типом.
@golang_interview
"Что такое пакеты в go?"
Пакет - это механизм переиспользования кода, при котором go файлы помещаются в общую директорию. В начале каждого такого файла объявляется зарезервированное слово package, а после него прописывается имя пакета. В рамках пакета все функции и глобальные переменные, объявленные как в верхнем, так и в нижнем регистре, видят друг друга.
@golang_interview
Пакет - это механизм переиспользования кода, при котором go файлы помещаются в общую директорию. В начале каждого такого файла объявляется зарезервированное слово package, а после него прописывается имя пакета. В рамках пакета все функции и глобальные переменные, объявленные как в верхнем, так и в нижнем регистре, видят друг друга.
@golang_interview