Go — Hello World


Введение в Go

Go lang или просто Go — это язык программирования, разработанный компанией Google. Никто не создает язык программирования просто так: «Эй, мне сегодня скучно, давайте создадим язык программирования» (как я пишу эту статью). Для создания языка программирования должна быть какая-то причина.

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

Что делают распределенная система и многоядерная архитектура?

Они помогают запущенным приложениям работать параллельно. Предположим, что в приложении есть 3 операции, такие как загрузка файла, скачивание файла и удаление файла. В большинстве современных приложений мы можем выполнять эти 3 операции одновременно. Это возможно благодаря распределенной системе и многоядерным процессорам.

Распределенная инфраструктура

Давайте посмотрим, как работает такая распределенная система. Распределенная система — это система, в которой различные логические части системы расположены на разных машинах, но при этом работают как одна машина (сервер). В нашем примере одна машина занимается загрузкой файлов, другая — скачиванием, а третья — редактированием.

Многоядерные процессоры

Давайте посмотрим, как работает многоядерный процессор. Предположим, что мы загружаем 10 файлов одновременно. В случае одноядерного процессора эти файлы помещаются в очередь. Один файл загружается за раз и один за другим. В случае многоядерного процессора каждое ядро выполняет один процесс, поэтому если имеется 10 ядер, то за время загрузки одного файла может быть загружено 10 файлов.

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

Concurrency

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

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

Плюсы Go

  • Время сборки и время выполнения (если вы не знаете разницу между временем сборки и временем выполнения, то она будет объяснена ниже) программ на Go почти такое же быстрое, как и на C/C++.
  • Простота — писать программы на языке go и запускать их очень просто.
  • Go использует меньше ресурсов (памяти и процессора), чем большинство других языков программирования.

Характеристики Go

  • Go используется в бэкенде для написания сервисов, которые взаимодействуют с облачными инфраструктурами, базами данных или любыми другими сервисами.
  • Это компилируемый язык, что означает, что каждая программа на Go компилируется, и компилятор создает двоичный файл с расширением .exe. Время, необходимое для создания бинарного файла (.env) из данной программы, называется временем сборки.
  • Это платформонезависимый язык. Двоичный файл, скомпилированный в одной ОС, может быть запущен и в других ОС. Этот двоичный файл и является тем, что обеспечивает выполнение программы. Время, необходимое для выполнения двоичного файла программы, называется временем выполнения.

Итак, с основными вещами покончено. Давайте перейдем к интересным вещам. Для этого нам понадобятся две вещи. Редактор кода и язык Go в нашей машине.

Установка VS code

Ссылка для установки VScode — Перейдите по этой ссылке и вы увидите что-то вроде этого.

Выберите в соответствии с вашей операционной системой и установите. Установка должна быть простой.

Установка Go

Ссылка для установки Go — Перейдите по этой ссылке и выберите вашу операционную систему для установки.

Эта установка также достаточно проста.

Чтобы проверить успешность установки, откройте терминал / командную строку и введите go и нажмите Enter. Если вы видите что-то вроде этого, значит, Go установился успешно.

Hello world в GO

  • Создайте новую папку или используйте существующую папку для хранения нашего файла программы hello world. Я назвал папку hello-world.

  • Откройте эту папку в VScode.

  • Когда мы начинаем новый проект Go в папке, первое, что нам нужно сделать, это инициализировать проект в этой папке. Команда для этого — go mod init <имя проекта>. Выполните эту команду в терминале / командной строке или во встроенном терминале VScode. Рекомендуется использовать одинаковые имена для папки и проекта.

  • Приведенная выше команда создает файл под названием go.mod. Если вы знакомы с семейством nodeJS, это нечто похожее на файл package.json. Если вы не знакомы с ним, то это просто файл, который содержит подробную информацию о проекте, в том числе название проекта, зависимости и т.д.

  • Теперь создайте файл и назовите его как угодно, но с расширением .go. Я назвал его hello.go.

  • Как только вы создадите файл с расширением .go в первый раз в вашем VScode, он порекомендует установить некоторые расширения, как на рисунке выше, а также как на рисунке ниже. Просто установите все расширения. Везде, где вы найдете install all, сделайте это. Если там не будет install, сделайте это.

  • Теперь мы полностью готовы к написанию нашей первой программы на Go. Итак, приступим.

Переходим к коду

Большинство языков программирования имеют начальную точку, с которой начинается выполнение программы. Точно так же и программы на Go имеют начальную точку, которой является главная функция.

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

Существует 3 части функции. Это:

  1. Заголовок функции
  2. Аргументы функции
  3. тело функции

1. Заголовок функции

В go он начинается с ключевого слова func. Ключевое слово — это конкретное слово, которое зарезервировано для определенной цели, и мы не можем использовать его для каких-либо других целей. Заголовок функции также содержит имя функции, с помощью которого мы хотим однозначно идентифицировать и вызвать ее. Синтаксис будет выглядеть как func <имя функции>.

2. Аргументы функции

Аргументы функции обернуты внутри пары круглых скобок (). Мы используем аргументы для передачи данных в функцию. Помните из предыдущей части, где мы говорили о том, что функция изолирована от других частей программы. Таким образом, мы используем аргументы функции как средство передачи данных для выполнения требуемой задачи. Для одной функции может быть любое количество аргументов в зависимости от задачи и требований этой задачи. Допустим, у нас есть функция, выполняющая сложение двух чисел, которые пользователь задает во время выполнения. Поскольку они поступают во время выполнения, мы не можем жестко закодировать их внутри функции. Единственный способ — принимать входные данные от пользователя во время работы приложения и передавать их в функцию, выполняющую сложение. И мы передаем эти входные данные в функцию, используя ее аргументы. Так, в данном случае наша функция сложения требует два аргумента. Синтаксис аргументов выглядит как (<arg 1>, <arg 2>, ...).

3. Тело функции

Это место, где мы пишем фактическую логику для выполнения поставленной задачи. В приведенном выше примере сложения мы хотим, чтобы наша функция складывала два заданных числа. Следовательно, основная логика функции находится в теле. Тело функции заключено в фигурные скобки { }.

Давайте объединим все и напишем синтаксис всей функции.

func <function name> (<arg1>, <arg2>, ...) {
    // function body goes here
}
Вход в полноэкранный режим Выйти из полноэкранного режима

Итак, вернемся к теме начальной точки программы. Начальной точкой программы go является специальная функция main. И выполнение программы начинается именно с нее, независимо от того, сколько строк кода или сколько функций в программе.

Итак, функция main в программе hello world будет выглядеть следующим образом:

package main

import "fmt"

func main() {
    fmt.Print("Hello world")
}
Вход в полноэкранный режим Выход из полноэкранного режима

Вот две строки, о которых мы еще не говорили.

Да… Я знаю.

Строка 1 — Это обязательная строка для каждой программы, в которой указывается пакет, к которому принадлежит текущая программа. Название может быть любым. Я просто указал main. Вы можете дать любое имя, какое захотите. Здесь имя пакета не имеет никакого значения, но когда мы работаем над огромными проектами, имена пакетов имеют значение. Просто имейте это в виду.

В строке 2 — Сказано импортировать пакет под названием fmt. Потому что мы используем функцию Print для печати некоторого текста на терминал вывода, и эта функция Print принадлежит пакету fmt, как наша основная функция принадлежит пакету main. Поэтому при использовании функции мы используем fmt., чтобы указать, что она принадлежит этому пакету.

Поэтому просто передайте все, что вы хотите напечатать внутри этой функции Print, обернув ее в "".

После написания программы сохраните ее.

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

Но мы также можем просто напрямую запустить его и посмотреть результат, используя команду go run <имя файла>. В нашем случае это go run main.go.

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

Заключение

На этом мы закончили. Другие статьи по Go lang скоро появятся, следите за мной, чтобы увидеть их. Не забудьте поставить лайк и поделиться, если вам понравилось.

Также ресурс, на котором я учился: Tech world with nana video — видео из Tech world with Nana.

Давайте общаться: Twitter LinkedIn Showwcase

Оцените статью
devanswers.ru
Добавить комментарий