Итак, до сих пор мы рассматривали основы Go, объявления, функции, структуры, управляющие операторы в Go. Теперь, в этой главе, мы обсудим больше об объектно-ориентированном аспекте языка Go. Если вы не выполнили предыдущие части, нажмите щелкните здесь, чтобы начать.
Указатель для этой серии следующий:
- Введение в Go
- Настройка среды Go
- Основы Go
- Оператор управления и функции
- Структуры
- Объектно-ориентированное программирование в Go
- Параллелизм
Метод
- Go Lang обычно не является объектно-ориентированным языком программирования, но использование типов и методов дает ощущение ООП в Go.
Примечание. Часто задаваемый вопрос: «в чем разница между функцией и методом». Метод - это функция, у которой есть определенный приемник, в терминах ООП метод - это функция на экземпляре объекта.
- Метод - это не что иное, как особый тип функции, у которой есть приемник.
- Методы могут получать доступ к полям в получателях.
Синтаксис метода,
func (r ReceiverType) funcName(parameters) (results)
Пример,
Зачем нам нужны методы, если мы можем делать то же самое с помощью Function?
- Мы можем написать приведенный выше пример, используя функции, и все равно получим тот же результат.
- Поскольку Go не является объектно-ориентированным языком программирования и не поддерживает поведение классов. Методы - это способ добиться поведения, аналогичного классам.
- У нас могут быть одинаковые имена методов с разными типами приемников, но это невозможно в функциях.
Мы также можем передавать получатели указателей вместо получателей значений, используя синтаксис
func (r *ReceiverType) funcName(parameters) (results)
- Мы передаем получатели указателя в методах как Получатели, потому что мы также можем изменить значение
ReceiverType
в приемниках указателя.
Пример,
- В методах мы можем использовать встроенные в структуры так же, как мы использовали структуры в предыдущей части, и это будет работать так же. Это называется наследованием методов.
Интерфейсы
- Интерфейс - это группа методов, которые мы используем для определения набора действий.
Синтаксис,
type interfaceName interface { //Custom Methods to implement }
- Нам не нужно объявлять
func
ключевое слово для объявления в начале каждого метода. - Go уже знает, что интерфейс может содержать только методы.
Пример,
- Мы также можем реализовать пустой интерфейс,
var interfaceName interface{}
Встроенные интерфейсы
- В частности, Go не предлагает наследование по умолчанию. Но для этого мы можем сделать это, создав новые интерфейсы, встраивая другие интерфейсы в родительский интерфейс.
Синтаксис,
//First Interface type DisplayFirstName interface { DisplayFName() } //Second Interface type DisplayLastName interface { DisplayLName() string } //Embedded Interface type EmployeeOperations interface { DisplayFirstName DisplayLastName }
- Он встроен так же, как и встроенные структуры, которые были объяснены в последней части серии.
PS: Это все об объектно-ориентированном программировании в Go. Далее мы расскажем о самой удивительной и удивительной особенности языка программирования Go - параллелизме, каналах и подпрограммах. Чтобы следовать Часть - VII, нажмите здесь.