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

Разработка на Go Просмотров: 2040

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, поэтому и в контексте статьи описание всех моих дальнейших действий приведу для  данного варианта 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 при наличии времени и возможностей, о результатах буду делиться с вами в других статьях.

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

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

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