Первая программа на языке Go

User Rating: 0 / 5

Доброго времени суток, друзья.

Я уверен, что уже есть немало хороших статей на тему создания "Hello, world"-программ на языке Go (к примеру, погуглив, я нашёл статью на metanit.com, статью на Хабре, а также статью на digitalocean.com). Ну вот и я решил не быть исключением и написать свой вариант. Цели статьи преследую следующие - кратко познакомить читателя с языком и его историей, пройти основные шаги по настройке и установке основного инструментария Go-разработчика для первого старта, ну и, собственно, написать наш вариант "Hello, world" на Go.

Итак, здесь мы напишем нашу первую программу на языке программирования Go (или, как его ещё называют, golang). В настоящее время данный язык всё больше и больше набирает популярность среди начинающих и опытных разработчиков.

Прежде, чем мы приступим к настройке окружения и среды разработки для Go, давайте разберём некоторые отличительные особенности языка. Что он собой представляет и для чего его вообще придумали его авторы? Почему же разработчикам Go не хватало возможностей множества других популярных языков, таких как Java, C++, C, Python, Kotlin, Scala и многих-многих других?

Согласно Википедии, Go является компилируемым многопоточным языком программирования, который изобрели во всем известной компании Google. Из той же Википедии мы узнаём, что разработка языка началась в 2007 году, а официально он был представлен общественности в ноябре 2009 года. Одной из идей и предпосылок для создания языка, которые разработчики языка ставили перед собой, насколько я понял, являлась идея создать  очень достойную замену существовавшим на то время языкам программирования - с учётом всех тех изменений в мире программного обеспечения и железа, которые происходили за последние десятилетия вместе с развитием и всей ИТ-индустрии. Процитирую слова Роба Пайка, одного из создателей Go: "Go был разработан для решения реальных проблем, возникающих при разработке программного обеспечения в Google".

Пожалуй, все ключевые особенности языка я тут перечислять не буду, вы сможете прочитать их сами на официальном сайте языка или других ресурсах, но отмечу здесь основной вывод, к которому пришёл лично я: создание языка Go - это довольно мощный вызов для всего мира разработки софта - хотя бы ввиду того, что язык Go нацелен извлечь всё то лучшее, что есть в широко распространённых языках, а также привнести свою изящную специфику и гибкость конструкций языка и учесть множество других нюансов и деталей, продиктованных требованиями современных реалий ИТ отрасли, которые не могли бы предоставить C/C++/Oberon/Pascal/Newsqueak/Smalltalk/и т.д.  с той же грациозностью, с которой это вышло у Go. Подытоживая сказанное, Go - это современный, практичный язык программирования с легко читаемым кодом, поддержкой сборки мусора, чётким разделением интерфейса и реализации, а также множеством других удобных, долгожданных и так нужных многим программистам фич.

Официальный сайт языка доступен по ссылке https://go.dev/, и прежде, чем начинать писать нашу первую программу на Go, мы должны скачать с него официальный бинарный дистрибутив (или релиз) с компилятором, всеми необходимыми библиотеками и средой выполнения для Go. Найдите подходящий для вашей операционной системы релиз и воспользуйтесь инструкциями по установке с официального сайта языка. В моём случае я использую операционную систему Windows 10, поэтому процесс установки Go свёлся к принятию всех настроек по умолчанию, и детали установки я пропущу.

Следующим шагом нам понадобится интегрированная среда разработки (или IDE, Integrated Development Environment) для написания наших программ на Go. В принципе ничто не мешает писать программы на Go просто в каком-нибудь удобном блокноте, без всякой специальной среды (например, в Notepad++), а потом просто компилировать написанный код вручную, но в целях удобства я бы всё же рекомендовал рассмотреть какую-то из популярных сред разработки - чтобы процесс разработки был не только полезен, но и приятен.

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

Итак, среди возможных основных вариантов сред разработки программ на языке Go я выявил следующие:

  • LiteIDE (официальный сайт) - бесплатная среда разработки для Go с поддержкой основных возможностей для разработки, сборки и отладки программ на Go.
  • GoLand (официальный сайт) - среда разработки от компании JetBrains, с бесплатным 30-ти дневным периодом и поддержкой всех основных возможностей для разработки на Go.
  • VSCode (официальный сайт и страница расширения) - плагин для известной среды разработки Visual Studio Code, позволяющий использовать все основные возможности для разработки программ на Go.
  • Go-plus плагин для редактора Atom (ссылка на страницу плагина) - специальный плагин с поддержкой языка Go в популярном редакторе Atom. Аналогично другим вариантам - поддерживает основные функциональные возможности для разработки программ на Go.
  • GoSublime (ссылка на Github) - это IDE-подобный плагин для редактора Sublime Text 3, который поддерживает интеграцию для большинства инструментов разработки Go/Golang.
  • vim-go (ссылка на Github) - это бесплатный плагин для популярного кросс-платформенного Open Source редактора vim. Плагин обеспечивает языковую поддержку для Go в vim, основные особенности вы найдете на их странице на Github

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

Установив и запустив LiteIDE, мы увидим главное окно среды разработки, где нам нужно начать с создания нового проекта.

Выбираем в главном меню Файл → Создать... и выбираем шаблон с названием "Go1 Package Project". В качестве имени проекта я выбрал FirstApp (обратим внимание, что по умолчанию среда предлагает создать проект в каталоге пользователя и подкаталоге \go\src - мы оставим этот путь по умолчанию):

После нажатия на "OK" видим, что среда создала для нас файл FirstApp.go и предлагает его открыть, соглашаемся:

Далее нашему взору предстанет созданный файл-шаблон для нашей первой программы на языке Go:

Чтобы наполнить наш созданный файл чем-то значимым, обратимся к официальному туториалу на сайте языка Go, а именно к разделу Get started with Go. Там же мы можем увидеть "каркас" простейшего приложения на Go:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

Разница с нашим файлом FirstApp.go в том, что пакет в нашем случае называется FirstApp, а не main.

Попробуем набрать руками этот простой пример программы, заодно проверим возможности LiteIDE в части подсказок при вводе текста программы. Можно видеть, что при наборе слова import среда выдаёт удобные подсказки - как в части самого ключевого слова import, так и для пакета "fmt":

Также довольно симпатично выглядят подсказки редактора кода для доступных методов из пакета fmt, в нашем случае нам нужен метод Println:

Итак, набрав текст из примера с официального сайта языка, я немного изменил сообщение на "Здравствуй, мир!", и вышло следующее:

Теперь нам нужно проверить работу нашей программы, для этого попробуем выбрать в панели инструментов BuildAndRun (или нажать любую из комбинаций клавиш Ctrl+R; Ctrl+F7):

Мы увидим ошибку go: go.mod file not found in current directory or any parent directory; see 'go help modules'

Ошибка говорит нам о том, что не был найден специальный файл go.mod (он нужен для управления зависимостями программы на Go) в текущей директории. К счастью, эта ошибка легко устраняется, для этого просто выберем в главном меню Сборка → Go Module Init:

После чего увидим, что в директории нашего проекта был создан файл go.mod, а в консоли появились соответствующие сообщения:

Повторим попытку сборки и запуска нашей программы, нажав кнопку BuildAndRun в панели инструментов (или одну из комбинаций клавиш Ctrl+R; Ctrl+F7). К сожалению, мы снова увидим сообщение об ошибке - на этот раз не удаётся запустить процесс:

Причина ошибка на этот раз другая - наш пакет всё же должен называться main, а не FirstApp. Исправив это в обоих файлах FirstApp.go и doc.go и снова нажав BuildAndRun, мы видим, как наша программа успешно была собрана и запущена - на экране консоли появилось сообщение "Здравствуй, мир!":

 

Также обращаем внимание, что во вкладке "Папки" в левой части LiteIDE (откройте вкладку, если ещё этого не делали), у нас появился исполняемый файл нашей программы - FirstApp.exe. Таким образом, мы написали, собрали и выполнили нашу первую программу на Go, с чем вас и поздравляю, друзья ?.

Ну, и наконец, чтобы запустить программу совсем честно, давайте откроем наш каталог с программой в Проводнике, запустим там консоль cmd и проверим, что наша программа на Go действительно работает, даже вне среды разработки LiteIDE:

Как видим, программа действительно запустилась и также вывела наше сообщение на экране консоли cmd.

Подытожим, краткие выводы:

  • первая программа на Go выглядит очень компактной (если не сказать миниатюрной) - 5 строк кода, если исключить переводы на новую строку.
  • основной пакет должен называться main, как и точка входа в программу - функция с именем main.
  • перед первой инициализацией проекта в LiteIDE нужно сделать инициализацию файла go.mod - через этот файл Go управляет зависимостями вашего приложения. Если бы вы пытались собрать программу без LiteIDE, пришлось бы воспользоваться командной строкой и выполнить команду вида $ go mod init FirstApp (также, если вы обратили внимание, о необходимости инициализации файла go.mod говорится и в официальном туториале Get started with Go).
  • сборка проекта занимает... считанные секунды, при этом на выходе получается полноценный исполняемый файл программы с расширением .exe
  • среда LiteIDE - в целом довольно удобна для написания программ на Go, я смог быстро сориентироваться в интерфейсе и основных её возможностях (достаточных для сборки нашей первой программы). Не собираюсь её рекламировать или сравнивать с аналогами, это лучше вы поделитесь своим опытом в комментариях к статье, если использовали другие IDE ? Я думаю, что другие варианты не сильно уступают LiteIDE (если вообще уступают), на которую упал мой экспериментаторский взор. Тем не менее среда разработки с задачей справилась - программа написана, собрана и работает.

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

Обновление статьи (от 21.11.2022):

После продолжения экспериментов с языком Go я подумал, что было бы неплохо для всех моих читателей организовать отдельный репозиторий со всеми сниппетами на Go и давать ссылку на GitHub и примеры программ в каждой статье. К слову, быстро найти интеграцию с системами контроля версий и GitHub в среде разработки LiteIDE, которую мы с вами рассмотрели, у меня не получилось, поэтому я подготовил инструкцию по тому, как запускать представленные примеры на Go в среде Visual Studio Code. Вы найдете ссылку на инструкцию внизу под ссылками на репозиторий примеров и сам скрипт с первой программой на Go. 

Спасибо за внимание, и да, мне очень важна обратная связь от вас, дорогие друзья, если вам интересна тема языка Go и хочется видеть и другие статьи на эту тему ☝️. Не стесняйтесь, пишите свои отзывы, мысли, предложения в комментариях к этой статье! На этом всё, удачи! ? 

 

Яндекс.Метрика