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

Указатель для этой серии следующий:

  1. Введение в Go
  2. Настройка среды Go
  3. Основы Go
  4. Оператор управления и функции
  5. Структуры
  6. Объектно-ориентированное программирование в Go
  7. Параллелизм

Метод

  • 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, нажмите здесь.