Введение:
Go — это статически типизированный компилируемый язык программирования, предлагающий уникальный подход к объектно-ориентированному программированию. В отличие от таких языков, как C++ или Java, в Go нет традиционных классов. Вместо этого он использует структуры и методы для достижения аналогичной функциональности. В этом посте мы углубимся в фрагмент кода, написанный на Go, и шаг за шагом объясним, как он работает.
Объяснение кода:
Давайте разберем предоставленный фрагмент кода Go и разберемся в его различных компонентах.
type Person struct { Name string Surname string Hobbies []string id string } func (person *Person) GetFullName() string { return fmt.Sprintf("%s %s", person.Name, person.Surname) } func main() { p := Person{ Name: "Mario", Surname: "Castro", Hobbies: []string{"cycling", "electronics", "planes"}, id: "sa3-223-asd", } fmt.Printf("%s likes %s, %s and %s\n", p.GetFullName(), p.Hobbies[0], p.Hobbies[1], p.Hobbies[2]) }
Приведенный выше пример взят из книги: Паттерны дизайна Go.
Определение структуры человека:
Код начинается с объявления структуры с именем Person
. Структура — это составной тип данных, который позволяет группировать значения разных типов. В этом случае структура Person
имеет четыре поля:
Name
(строка): представляет имя человека. Surname
(строка): представляет фамилию человека. Hobbies
([]string): представляет список увлечений человека. Это фрагмент строк, позволяющий хранить несколько увлечений. id
(строка): Представляет уникальный идентификатор человека.
Создание метода в структуре Person:
Затем мы определяем метод с именем GetFullName()
в структуре Person
. В Go метод связывается со структурой путем объявления метода с типом получателя. В этом случае тип получателя является указателем на структуру Person
(*Person)
. Цель этого метода — объединить поля Name
и Surname
экземпляра Person
и вернуть полное имя в виде строки.
Функция main():
Переходя к функции main()
, мы видим следующие шаги:
Создание экземпляра Person
: мы создаем новый экземпляр структуры Person
с именем p, используя литерал структуры. Предоставляются значения для полей Name
, Surname
, Hobbies
и id
.
Вызов метода GetFullName()
: Используя экземпляр p
, мы вызываем метод GetFullName()
, определенный в структуре Person
. Это достигается с помощью записи через точку (p.GetFullName()
).
Печать результата: Функция fmt.Printf()
используется для печати форматированной строки. Строка включает полное имя, полученное из p.GetFullName()
, и первые три увлечения из поля Hobbies
.
Выход:
Конечным результатом работы программы является следующая строка: «Марио Кастро любит езду на велосипеде, электронику и самолеты». Это демонстрирует, что код успешно извлекает полное имя и печатает его вместе с увлечениями человека.
Заключение:
В заключение, Go предлагает альтернативный подход к объектно-ориентированному программированию, используя структуры и методы. Хотя в Go нет классов, как в других языках, он позволяет вам связывать методы со структурами, определяя тип получателя. Этот фрагмент кода демонстрирует использование структур и методов в Go, демонстрируя, как можно вызывать методы для экземпляров структуры для выполнения определенных операций. Понимая эти концепции, разработчики могут использовать уникальный подход Go для создания эффективного и лаконичного кода.
Ищете краткосрочные концерты, чтобы увеличить свой доход? Не смотрите дальше! Присоединяйтесь к Gig-платформе TopCoder уже сегодня! Будучи талантливым программистом или фрилансером, вы обладаете навыками, которые пользуются большим спросом. С TopCoder’s Gig вы можете найти интересные возможности для работы над короткими проектами и дополнительного заработка.
Если вы планируете поступить в Scaler Academy и хотите получить рекомендации и скидку на оплату, я могу помочь. Как действующий студент Scaler, я могу дать рекомендации. Пожалуйста, заполните форму по следующей ссылке для получения дополнительной информации: ФОРМА — Информация перед направлением в Scaler Academy
Вы увлечены развитием и хотите найти работу, которая использует ваши навыки? Проверьте Geektrust для ресурсов и возможностей в области разработки
Первоначально опубликовано на https://programmercave.com.