Если вы хотите применить некоторые шаблоны проектирования (подробнее: https://sourcemaking.com/design_patterns) в программе Go, например, Adepter, Proxy или Decorator, или даже при тестировании программы Go, вам может потребоваться использовать методы и интерфейсы в вашем коде. Итак, эта статья объяснит вам, что это такое и как их использовать. Если вы готовы учиться, давайте пройдем через это!

Что такое метод?

Метод - это функция или фрагмент кода, связанный с объектом.

Допустим, у вас есть структура с именем «Автомобиль», и вы создаете метод структуры с именем «Drive», затем вы объявляете объект из структуры и называете его как тесла. Таким образом, вы можете вызвать метод «Drive» вашего «tesla», чтобы делать то, что вы запрограммировали для этого метода, используя свойства или поля вашего «tesla , чтобы перейти к расчету.

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

Использование метода

По сути, все методы связаны с объектами, это означает, что вам нужно иметь хотя бы один объект в вашем коде для объявления каких-либо методов.

После того, как вы получите свою структуру, вы сможете создать свой метод

Метод очень похож на функцию, но разница в том, что метод связан с объектом и можно ли вычислить свойства внутри объекта, как и в методе «Drive», который использует «Distance» свойство «Car» для вычисления нового «расстояния».

Если вам нужно предоставить некоторые поля вашей структуры другим пакетам, не экспортируя их напрямую, лучшим выбором будет использование таких методов, как «Getter».

Setter - это способ установить значение неэкспортируемых полей, а геттер может использоваться для установки значения по умолчанию для любого поля, которое вы хотите, как в примере ниже.

Теперь вы уже узнали, как работают методы и как работать с ними, но в Golang есть еще одна функция, которая может расширить возможности структур и их методов. Это функция «Интерфейс».

Что такое интерфейс?

Интерфейс - это набор сигнатур метода, который может реализовать объект.

Чтобы сделать его более понятным, допустим, у вас есть другая структура с именем «Plane» и ее методы: «Fly» и «GetDistance». И вы хотите использовать его со структурой «Car», используя ту же логику для определения расстояния до них. В этом вам поможет интерфейс.

Из приведенного выше примера вы можете использовать одну и ту же функцию с разными типами параметров, используя интерфейс в качестве аргумента. И прежде чем использовать метод из интерфейса, вам необходимо выполнить «утверждение типа», что является очень важным шагом при использовании интерфейсов.

В любом случае код можно улучшить и сократить, объявив тип интерфейса с набором сигнатуры метода. В нашем случае это метод GetDistance. Вы увидите, насколько он короткий.

Однако не забудьте проверить свой интерфейс перед его использованием, потому что каким-то образом он может быть nil.

Надеюсь, вы поймете, как реализовать интерфейс с несколькими типами, это позволит вам создать только одну логику для выполнения их метода и упростит вам жизнь 😂.

Рекомендуемые статьи