Go — это язык без классов, и я не жалуюсь на это. На самом деле, я не жалуюсь на многие вещи в Golang, о которых я думал до того, как начал программировать на Go.

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

Если вы пришли из ООП-языка, go может показаться вам немного странным. Но не волнуйтесь, я постараюсь сделать все возможное, чтобы помочь.

‹Что такое функция приемника/›

Первое, с чем нам нужно ознакомиться, — это метод. Метод — это не то, что мы знаем из таких языков, как Python. Метод, по сути, похож на функцию, но он получает специальный аргумент, который является получателем.

Получатель, с другой стороны, по сути является просто типом, который может напрямую вызывать функцию. Метод состоит из ключевого слова func, аргумента получатель и тела функции.

Общая настройка, как правило, состоит из трех шагов.

  • Создайте тип. Гипотетически это похоже на создание переменных класса Python.
  • Создайте геттер. Это берет аргументы из типа и выдает тип. Гипотетически это похоже на создание конструктора Python.
  • Создайте метод. Что ж, это похоже на методы Python, которые мы вызываем из объектов.

‹Посмотреть в действии/›

Остерегайтесь комментариев.

Наш тип представляет собой структуру с именем Rig и имеет 3 поля. Каждый раз, когда я хочу создать новую установку, функция NewRig будет обрабатывать входные данные и отправлять их в структуру для заполнения. В конце концов, он вернет новый риг, который мы только что создали.

Функция получателя получает структуру и теперь является связанной с ней функцией. Каждый раз, когда создается новый риг, он будет упакован функцией MyRig, которая пока мало что делает :)

инициализируем.

Поскольку я запускаю 2 строки кода выше в другом месте, я добавляю функцию NewRig с именем пакета, с которым она была связана.

Бежим с go run main.go:

Вуаля! Теперь каждый раз, когда я создаю новую установку, я могу распечатать это, а также привязать новые функции получателя к своей структуре!

Надеюсь, вам понравилось. До скорого!

Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏, чтобы выразить свою поддержку автору 👇

🚀Разработчики: учитесь и развивайтесь, не отставая от того, что важно, ПРИСОЕДИНЯЙТЕСЬ К FAUN.