Язык программирования golang для чайников
Golang: основы для начинающих
Golang, или Go — язык программирования, начало которого было положено в 2007 году сотрудниками компании Google. В этом руководстве по Golang мы рассмотрим, как установить необходимое ПО и написать свою первую программу.
Go поддерживает типобезопасность, возможность динамического ввода данных, а также содержит богатую стандартную библиотеку функций и встроенные типы данных вроде массивов с динамическим размером и ассоциативных массивов.
С помощью механизмов многопоточности Go упрощает распределение вычислений и сетевого взаимодействия, а современные типы данных открывают программисту мир гибкого и модульного кода. Программа быстро компилируется, при этом есть сборщик мусора и поддерживается рефлексия.
Это быстрый, статически типизированный, компилируемый язык, при использовании которого создается впечатление использования динамически типизированного и интерпретируемого языка.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Настройка окружения
Для начала скачаем 64-битную версию Go c официального сайта. В зависимости от используемой операционной системы выполняем следующие действия.
UNIX / Linux / MacOS / FreeBSD
Добавляем папку /usr/local/go/bin в переменную окружения PATH :
Windows
Чтобы изменения вступили в силу, перезапустим все открытые окна эмуляторов терминала.
Проверяем корректность установки, создав и выполнив файл C:\Projects\Go\test.go :
Выполним этот код и получим следующий результат:
Синтаксис
Пакеты
Импорт
Импорт пакетов можно описать двумя способами.
Функции
Общая форма определения функции выглядит следующим образом:
Количество и тип входных аргументов может быть любым. Для примера опишем функцию add с двумя входными параметрами формата int :
Выполним этот код и получим следующий результат:
Переменные
Определение переменной в Go означает передачу компилятору информации о типе данных, а так же о месте и объёме хранилища, которое создаётся для этой переменной. Определять переменные одного типа можно по одному и списком. Общая форма такая:
С помощью оператора var определяем перечень переменных, причём тип данных указываем в конце выражения.
Объявление возможно как на уровне пакета, так и на уровне функции. Рассмотрим пример:
Выполним этот код и получим следующий результат:
Оператор цикла
Общая форма цикла выглядит так:
При инициализации кратко объявляются переменные, которые доступны только в пределах цикла.
Примечание В отличие от таких языков, как C, Java и JavaScript, перечисленные выражения цикла не выделяются скобками. В данном случае обязательны лишь фигурные скобки, обрамляющие тело цикла.
Рассмотрим пример программы:
Выполним этот код и получим следующий результат:
Условный оператор
Форма определения условного оператора в Go выглядит следующим образом:
Если выражение в поле условия истинно, код, размещённый между фигурными скобками, выполнится.
Условие описывается значением, переменной или выражением. Например:
Рассмотрим пример программы:
Выполним этот код и получим следующий результат:
Массивы
Язык программирования Go также поддерживает массивы, которые представляют из себя структуру данных фиксированного размера, состоящую из элементов одного типа. Массивы используются для хранения наборов данных, но полезно подразумевать под ними коллекцию переменных одного типа.
Чтобы объявить массив, необходимо указать тип и требуемое количество элементов следующим образом:
Если значения элементов известны, для определения массива допустимо использовать следующую конструкцию:
Длина массива не изменяется, потому что является частью типа данных. Это кажется ограниченным решением, но не волнуйтесь: в Go реализована комфортная работа с массивами.
Рассмотрим пример программы:
Выполним этот код и получим следующий результат:
Срезы
Срезы (Slices) в Go — абстракция над массивами. Хотя встроенных способов увеличить размер массива динамически или сделать вложенный массив в Go нет, срезы убирают это ограничение. Они предоставляют полезные функции и широко используются программистами.
Объявить срез можно как массив, но без указания размера или с помощью функции make :
Размер массива фиксирован, а у среза изменяемый. По сути, срез — более общий вид массива.
Рассмотрим пример программы:
Выполним этот код и получим следующий результат:
Структуры
Struct определяет тип данных, которому соответствует два и более элементов.
Type связывает заданное имя с описанием структуры.
Форма описания выглядит следующим образом:
Как только структура типа определена, он может использоваться при объявлении новых переменных:
Чтобы получить доступ к элементам структуры, используем оператор доступа к элементу. Рассмотрим на примере:
Выполним этот код и получим следующий результат:
Чем Golang хорош для начинающих?
Концепция языка Golang разработана на основе опыта решения повседневных задач и не преследует цель сделать прорыв в программировании. Кроме того, Go не реализует ряд функций, которые делают другие языки (C++, Java и Python) настолько мощными. Но есть три причины, чтобы задуматься об использовании этого языка.
Читабельность
Как только привык к синтаксису Go, прочесть чужой код — тривиальная задача.
У каждого человека собственный «правильный» способ делать вещи, поэтому Go навязывает свой стиль программирования. В результате вопросы вроде использования или неиспользования фигурных скобок отпадают, и остаётся только писать код по заданным правилам. Поэтому Golang подходит для начинающих.
Скорость
За короткий промежуток времени можно написать быструю программу.
Производительность работы пакета на Go, возможно, будет меньше, чем при использовании С, зато скорость компиляции для больших программ будет выше. Для большинства проектов — приемлемый компромисс, причём при необходимости достаточно просто переписать код на языке Go.
Меньше ошибок
Большинство ошибок возникают в непроверенном или сложном коде.
Go предоставляет удобные средства для тестирования. Кроме того, строгая типизация устраняет ошибки вроде случайного сравнения количества яблок с количеством груш, которые определяются ещё на этапе компиляции.
Заключение
Если хотите погрузиться глубже в изучение, посмотрите нашу подборку бесплатных книг по знакомству с языком программирования Go, а главное — начните создавать маленькие программы, чтобы на практике понять тонкости языка. Удачи!
🏃 Язык Go: как стать востребованным программистом
Востребованность языка Go и его перспективы
Раздел «Самые горячие языки программирования» ежегодного отчета State of Software Engineers платформы Hired показал, что инженеры, имеющие опыт разработки Go, получают в среднем девять запросов на собеседование, что делает язык Go одним из наиболее востребованных языков программирования в мире.
Давайте выясним, что такое Go
Go (часто также Golang) разработан Google в 2009 г. Идея состояла в том, чтобы иметь язык с эффективностью на уровне C++, но с удобочитаемостью, сравнимой с Python. Помимо Google язык Go используют Uber, Fabric, Sendgrid, Medium, Dropbox, Netflix, Cloudflare, American Express, Salesforce, IBM, Target, Twitch, Twitter, Uber и Docker, а также российские Mail.ru Group, Tinkoff, Avito и Ozon. Подробный список компаний, которые используют Golang, можно найти в репозитории GoUsers – можно ориентироваться на него при анализе возможностей для трудоустройства.
Зачем было нужно создавать ещё один язык?
Cегодня молодые программисты не столько исследователи, сколько «гуглеры». Программисты-самоучки стремятся скорее получить практические навыки.Немногие начинающие программисты готовы разбираться в действительно сложных языках и фундаментальной информатике, но все хотят быть востребованными и уметь создавать конкурентное программное обеспечение. Лучший способ удовлетворить эти потребности – предложить язык, который они смогут легко освоить и найти высокооплачиваемую работу.
Как язык Go отвечает этим требованиям?
Изучая Go, вы также получите базовые знания об операционной системе и дизайне компьютера, работе с памятью, многопоточностью, синхронизацией процессов.
Таким образом, Go является идеальным языком для входа в мир программирования. Переход на Golang будет еще более простым, если у вас уже есть опыт программирования на C-подобных языках.
Что можно писать на Go, в каких отраслях он используется?
В почете ли Go среди программистов?
Рассмотрим несколько рейтингов, чтобы понять, как Go оценивается мировым сообществом разработчиков.
Таким образом, общая тенденция, заключается в том, что Go с каждым годом становится все более популярным. Сейчас самое время начать изучать язык независимо от того, являетесь ли вы новичком или опытным разработчиком
База знаний для самообучения Go
Как выучить Go онлайн
Этого веб-сайта вполне достаточно для изучения основ Go, но для дальнейшего обучения будет полезен список ресурсов, которые вы можете использовать в зависимости от предпочтений в изучении GoLang.
Oнлайн-платформы
Oнлайн-курсы
Если почти все предыдущие источники требовали знания английского языка, два следующих курса от Mail.ru Group на Coursera изложены полностью на русском языке. Курс предназначен для людей с опытом в веб-программировании.
Книги
YouTube
Конференции
Коммьюнити
Какие знания и скиллы нужны Go-разработчику в повседневной работе
Как видите, чтобы стать разработчиком Go, вы должны знать не только язык Go, но и приобрести некоторые другие навыки. Если вы новичок в программировании, лучше всего начать с простых инструментов, таких как HTML, CSS и JavaScript. Вам также необходимо знать, как использовать Git и Linux. В любом случае, эти навыки будут полезны независимо от того, какой язык вы выберете для изучения. Если вы опытный программист, изучение Go может открыть новые горизонты, поможет получить более высокую зарплату или даже переехать в новую страну– компании готовы платить за релокейшн востребованных Go-разработчиков.
Карьерные перспективы
Чтобы найти первую работу в Go для джуниоров с набором навыков Go, нужно создать портфолио с проектами, ориентированными на Go. Вы можете придумать свои собственные проекты или внести свой вклад в open source и включить это в свое резюме. Другой способ – платные онлайн-курсы, которые помогут создать и совершенствовать проекты вашего портфолио. Для опытных разработчиков с готовыми портфелями достаточно одного или двух полностью проработанных проектов на Golang, чтобы получить приглашение на интервью.
Заключение
Понадобится немало времени и множество усилий, чтобы достичь вашей цели — стать Go-разработчиком. Помимо этого, очень важно всегда оставаться пунктуальными и сконцентрированными, чтобы не сбиться с пути.
Если вы чувствуете, что не в состоянии всё постичь самостоятельно и нуждаетесь в помощи профессионалов, всегда можно найти отличные курсы и школы программирования. Например, курс GeekBrains Go-developer проведет вас по всем темам и технологиям, необходимым для того, чтобы стать программистом на языке Go. В конце курса у вас будут 5 проектов, которые помогут создать свое портфолио и начать подавать заявки на биржах вакансий. Если вы хотите узнать больше о курсе, нажмите на ссылку ниже и начните свой путь Go-разработчика.
Быстрый старт с Go: первые шаги
Go (также Golang) – компилируемый язык программирования, разработанный в компании Google и официально представленный в 2009 году. Он предназначен для создания высокоэффективных программ, рассчитанных на многоядерные и многопроцессорные компьютеры.
В этой статье мы рассмотрим азы Go, делая простые последовательные шаги:
Устанавливаем компилятор
Сначала посетим официальный сайт golang.org, чтобы скачать и инсталлировать компилятор Go. После этого в командной строке (терминале) станет доступна команда go. Вот пример диалога в командной строке Windows – здесь используется параметр version, который показывает версию установленного компилятора:
Пишем «Hello, World!»
Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале).
Разумеется, лучше использовать редактор с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск. Для Windows подойдёт Notepad++ с плагином NppExec. Для Linux и Мас – Geany или Atom. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».
Писать при изучении нового языка код, который выводит «Hello, world!», – давняя традиция. Она появилась в 1978 году с выходом книги «Язык программирования С» Брайана Кернигана и Денниса Ричи. Идея такой программы – создать минимальный по объёму работающий код.
Код начинается с ключевого слова package – объявления имени пакета. Для исполняемых файлов это всегда будет main, а для библиотек – имя директории, в которой находится файл. Функция main() – стартовая, своего рода точка входа в приложение. Она содержит вызов встроенной функции println(), которая выводит в консоль текст в скобках, заключённый в кавычки.
Набранный в редакторе код сохраняем в файле с именем hello.go. Теперь можно перейти в командную строку и запустить нашу программу для исполнения. Обратите внимание – нужно перейти в каталог, где мы сохранили файл. Вызываем go, указывая параметр run и имя файла через пробелы.
Знакомимся с переменными
В программировании традиционно разделяют код и данные.
Для хранения данных используются переменные. Их можно представить образно – как коробки с данными, на каждой из которых написаны имя и тип переменной. Нам доступны:
В Go любую переменную перед использованием необходимо объявить, то есть подготовить соответствующую коробку, указав тип и имя. Это связано с тем, что Go – язык со строгой и статической типизацией. Попытка использовать переменную без предварительного объявления приведёт к ошибке компиляции.
В этом примере для вывода приветствия используется строчная переменная. Она объявляется при помощи ключевого слова var, после имени указывается тип string. Знак равенства означает присваивание, запись значения в переменную.
Допустима сокращённая запись, без указания типа и слова var. В этом случае перед знаком равенства ставится двоеточие (получается := вместо =). И компилятор определяет тип по значению, которое присваивается.
Правильное именование переменных – важная часть разработки. Имена должны начинаться с буквы и могут содержать буквы, цифры и знак _ (подчёркивание). Имя должно быть мнемоническим – то есть «говорящим», объясняющим назначение переменной.
Узнаём про условия и циклы
В программировании часто требуется выполнять одну или другую группу команд в зависимости от результата проверки (ветвление). Такую возможность предоставляет оператор if.
Эта программа иллюстрирует ветвление, моделируя ситуацию с чайником. После ключевого слова if идёт логическое выражение (water == 0), где значение переменной water сравнивается с нулём на равенство. Если water равна нулю (в чайнике нет воды), то результат выражения будет true (истина). И, согласно заданному условию, будет выполнен блок команд в фигурных скобках после логического выражения. В противном случае – если результат выражения false – выполнится блок после else.
Помимо ветвлений в программировании используются циклы, позволяющие повторять группы (блоки) команд. Работу с циклами в Go обеспечивает оператор for. Его базовая форма содержит три фрагмента (инициализация, условие, приращение). Первый и последний фрагменты могут отсутствовать. Пустой for создаёт бесконечный цикл.
Ниже приводим код, который иллюстрирует классический for, с использованием счётчика i. Результатом его работы будет колонка чисел от 0 до 4 – значения счётчика цикла на каждой итерации (повторе).
Импортируем пакеты
Один из важных принципов программирования – DRY: Don’t Repeat Yourself (не повторяйся). Это значит, что нам не нужно писать все модули своей программы с нуля. Вместо этого можно использовать уже готовые блоки или фрагменты, написанные кем-то ранее.
Поэтому Go поставляется с богатой библиотекой, которая содержит множество пакетов (packages). Каждый пакет имеет определённую тематику, на которую указывает его имя, и содержит соответствующие функции. Подробную документацию с описанием всех пакетов и функций можно найти на сайте Go в разделе “Packages”.
Если мы хотим использовать ту или иную функцию, нужно импортировать соответствующий пакет. К примеру, функции форматированного ввода-вывода содержатся в пакете fmt. Чтобы их применить, нужно добавить в код команду импорта, указывая имя пакета, и через точку после него вызывать нужную функцию.
Создаём игру «Угадай число»
Наших знаний Go уже достаточно, чтобы написать игру «Угадай число». В ней компьютер загадывает целое число от 0 до 9, а человек должен отгадать его с трёх попыток.
Нам потребуются функции из пакета fmt для ввода-вывода и функция генерации случайных чисел из пакета rand.
Объявим и инициируем три целочисленные переменные: счётчик неудачных попыток – count, ввод числа с консоли – guess, загаданное число – number.
Напишем основной игровой цикл. Условие его повторения описано после слова for. Тело цикла повторяется, пока значение счётчика неудачных попыток не достигнет числа 3 и при этом “загаданное” число ещё не будет отгадано.
В теле цикла читаем число-догадку с консоли и сравниваем с загаданным. В случае несовпадения выводим подсказку (больше или меньше) и увеличиваем счётчик неудачных попыток на 1. В случае совпадения цикл прекратится.
Также понадобится вывести результат игры (победа или проигрыш) после завершения игрового цикла.
Остаётся правильно собрать все эти фрагменты в одном файле – и можно пробовать сыграть с компьютером.
Поиграв с компьютером, мы обнаружим странное поведение генератора случайных чисел. А именно: раз за разом он генерирует одинаковую последовательность. Впрочем, это легко исправить следующей строкой кода, которую надо вставить до генерации случайного числа. Не забудьте при этом импортировать пакет time.
Заключение
Если у вас всё получилось — поздравляю. Если нет и возникли вопросы — пишите, спрашивайте, не стесняйтесь. Меня можно найти в Telegram под ником @biblelamp или на сайте GeekBrains. Я желаю всем удачи и рекомендую никогда не останавливаться в изучении программирования.
А тех, кто решил досконально освоить язык Go, мы приглашаем на факультет Go-разработки. Вы научитесь решать реальные бизнес-задачи с помощью Go, а также добавите в портфолио несколько разноплановых проектов, с которыми можно смело идти к будущему работодателю.
Go (также Golang) – компилируемый язык программирования, разработанный в компании Google и официально представленный в 2009 году. Он предназначен для создания высокоэффективных программ, рассчитанных на многоядерные и многопроцессорные компьютеры.
В этой статье мы рассмотрим азы Go, делая простые последовательные шаги:
Устанавливаем компилятор
Сначала посетим официальный сайт golang.org, чтобы скачать и инсталлировать компилятор Go. После этого в командной строке (терминале) станет доступна команда go. Вот пример диалога в командной строке Windows – здесь используется параметр version, который показывает версию установленного компилятора:
Пишем «Hello, World!»
Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале).
Разумеется, лучше использовать редактор с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск. Для Windows подойдёт Notepad++ с плагином NppExec. Для Linux и Мас – Geany или Atom. Подробно об их настройке можно прочитать в статье «Пишем код на Java и Go в текстовом редакторе».
Писать при изучении нового языка код, который выводит «Hello, world!», – давняя традиция. Она появилась в 1978 году с выходом книги «Язык программирования С» Брайана Кернигана и Денниса Ричи. Идея такой программы – создать минимальный по объёму работающий код.
Код начинается с ключевого слова package – объявления имени пакета. Для исполняемых файлов это всегда будет main, а для библиотек – имя директории, в которой находится файл. Функция main() – стартовая, своего рода точка входа в приложение. Она содержит вызов встроенной функции println(), которая выводит в консоль текст в скобках, заключённый в кавычки.
Набранный в редакторе код сохраняем в файле с именем hello.go. Теперь можно перейти в командную строку и запустить нашу программу для исполнения. Обратите внимание – нужно перейти в каталог, где мы сохранили файл. Вызываем go, указывая параметр run и имя файла через пробелы.
Знакомимся с переменными
В программировании традиционно разделяют код и данные.
Для хранения данных используются переменные. Их можно представить образно – как коробки с данными, на каждой из которых написаны имя и тип переменной. Нам доступны:
В Go любую переменную перед использованием необходимо объявить, то есть подготовить соответствующую коробку, указав тип и имя. Это связано с тем, что Go – язык со строгой и статической типизацией. Попытка использовать переменную без предварительного объявления приведёт к ошибке компиляции.
В этом примере для вывода приветствия используется строчная переменная. Она объявляется при помощи ключевого слова var, после имени указывается тип string. Знак равенства означает присваивание, запись значения в переменную.
Допустима сокращённая запись, без указания типа и слова var. В этом случае перед знаком равенства ставится двоеточие (получается := вместо =). И компилятор определяет тип по значению, которое присваивается.
Правильное именование переменных – важная часть разработки. Имена должны начинаться с буквы и могут содержать буквы, цифры и знак _ (подчёркивание). Имя должно быть мнемоническим – то есть «говорящим», объясняющим назначение переменной.
Узнаём про условия и циклы
В программировании часто требуется выполнять одну или другую группу команд в зависимости от результата проверки (ветвление). Такую возможность предоставляет оператор if.
Эта программа иллюстрирует ветвление, моделируя ситуацию с чайником. После ключевого слова if идёт логическое выражение (water == 0), где значение переменной water сравнивается с нулём на равенство. Если water равна нулю (в чайнике нет воды), то результат выражения будет true (истина). И, согласно заданному условию, будет выполнен блок команд в фигурных скобках после логического выражения. В противном случае – если результат выражения false – выполнится блок после else.
Помимо ветвлений в программировании используются циклы, позволяющие повторять группы (блоки) команд. Работу с циклами в Go обеспечивает оператор for. Его базовая форма содержит три фрагмента (инициализация, условие, приращение). Первый и последний фрагменты могут отсутствовать. Пустой for создаёт бесконечный цикл.
Ниже приводим код, который иллюстрирует классический for, с использованием счётчика i. Результатом его работы будет колонка чисел от 0 до 4 – значения счётчика цикла на каждой итерации (повторе).
Импортируем пакеты
Один из важных принципов программирования – DRY: Don’t Repeat Yourself (не повторяйся). Это значит, что нам не нужно писать все модули своей программы с нуля. Вместо этого можно использовать уже готовые блоки или фрагменты, написанные кем-то ранее.
Поэтому Go поставляется с богатой библиотекой, которая содержит множество пакетов (packages). Каждый пакет имеет определённую тематику, на которую указывает его имя, и содержит соответствующие функции. Подробную документацию с описанием всех пакетов и функций можно найти на сайте Go в разделе “Packages”.
Если мы хотим использовать ту или иную функцию, нужно импортировать соответствующий пакет. К примеру, функции форматированного ввода-вывода содержатся в пакете fmt. Чтобы их применить, нужно добавить в код команду импорта, указывая имя пакета, и через точку после него вызывать нужную функцию.
Создаём игру «Угадай число»
Наших знаний Go уже достаточно, чтобы написать игру «Угадай число». В ней компьютер загадывает целое число от 0 до 9, а человек должен отгадать его с трёх попыток.
Нам потребуются функции из пакета fmt для ввода-вывода и функция генерации случайных чисел из пакета rand.
Объявим и инициируем три целочисленные переменные: счётчик неудачных попыток – count, ввод числа с консоли – guess, загаданное число – number.
Напишем основной игровой цикл. Условие его повторения описано после слова for. Тело цикла повторяется, пока значение счётчика неудачных попыток не достигнет числа 3 и при этом “загаданное” число ещё не будет отгадано.
В теле цикла читаем число-догадку с консоли и сравниваем с загаданным. В случае несовпадения выводим подсказку (больше или меньше) и увеличиваем счётчик неудачных попыток на 1. В случае совпадения цикл прекратится.
Также понадобится вывести результат игры (победа или проигрыш) после завершения игрового цикла.
Остаётся правильно собрать все эти фрагменты в одном файле – и можно пробовать сыграть с компьютером.
Поиграв с компьютером, мы обнаружим странное поведение генератора случайных чисел. А именно: раз за разом он генерирует одинаковую последовательность. Впрочем, это легко исправить следующей строкой кода, которую надо вставить до генерации случайного числа. Не забудьте при этом импортировать пакет time.
Заключение
Если у вас всё получилось — поздравляю. Если нет и возникли вопросы — пишите, спрашивайте, не стесняйтесь. Меня можно найти в Telegram под ником @biblelamp или на сайте GeekBrains. Я желаю всем удачи и рекомендую никогда не останавливаться в изучении программирования.
А тех, кто решил досконально освоить язык Go, мы приглашаем на факультет Go-разработки. Вы научитесь решать реальные бизнес-задачи с помощью Go, а также добавите в портфолио несколько разноплановых проектов, с которыми можно смело идти к будущему работодателю.