На информационном ресурсе применяются рекомендательные технологии (информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети "Интернет", находящихся на территории Российской Федерации)

GeekBrains

4 подписчика

Быстрый старт с Go: первые шаги

Go (также Golang) – компилируемый язык программирования, разработанный в компании Google и официально представленный в 2009 году. Он предназначен для создания высокоэффективных программ, рассчитанных на многоядерные и многопроцессорные компьютеры.

В этой статье мы рассмотрим азы Go, делая простые последовательные шаги:

  • скачаем и установим компилятор;
  • научимся писать несложный код, компилировать и запускать его;
  • познакомимся с переменными;
  • узнаем об условиях и циклах;
  • освоим импорт и использование функций из пакетов;
  • напишем игру «Угадай число».

Устанавливаем компилятор

Сначала посетим официальный сайт golang.org, чтобы скачать и инсталлировать компилятор Go. После этого в командной строке (терминале) станет доступна команда go. Вот пример диалога в командной строке Windows – здесь используется параметр version, который показывает версию установленного компилятора:

 C:\Users\user>go version go version go1.13 windows/amd64

Пишем «Hello, World!»

Писать исходный код можно в любом текстовом редакторе. А компиляцию и запуск проводить в командной строке (терминале).

Разумеется, лучше использовать редактор с подсветкой синтаксиса и плагином, автоматизирующим компиляцию и запуск. Для Windows подойдёт Notepad++ с плагином NppExec. Для Linux и Мас – Geany или Atom.

Писать при изучении нового языка код, который выводит «Hello, world!», – давняя традиция. Она появилась в 1978 году с выходом книги «Язык программирования С» Брайана Кернигана и Денниса Ричи. Идея такой программы – создать минимальный по объёму работающий код.

 package main   func main() {     println("Hello, World!") }

Код начинается с ключевого слова package – объявления имени пакета. Для исполняемых файлов это всегда будет main, а для библиотек – имя директории, в которой находится файл. Функция main() – стартовая, своего рода точка входа в приложение. Она содержит вызов встроенной функции println(), которая выводит в консоль текст в скобках, заключённый в кавычки.

Набранный в редакторе код сохраняем в файле с именем hello.go. Теперь можно перейти в командную строку и запустить нашу программу для исполнения. Обратите внимание – нужно перейти в каталог, где мы сохранили файл. Вызываем go, указывая параметр run и имя файла через пробелы.

 C:\Users\User>go run hello.go Hello, world!

Знакомимся с переменными

В программировании традиционно разделяют код и данные.

  • Код – последовательность команд для обработки данных.
  • Данные – информация, которая обрабатывается с помощью кода. Данные могут содержать числа, символы, строки, логические значения и так далее. 

Для хранения данных используются переменные. Их можно представить образно – как коробки с данными, на каждой из которых написаны имя и тип переменной. Нам доступны:

  • запись значения в переменную (или присвоение значения) – замена содержимого коробки;
  • чтение значения из переменной – изъятие этого содержимого.

В Go любую переменную перед использованием необходимо объявить, то есть подготовить соответствующую коробку, указав тип и имя. Это связано с тем, что Go – язык со строгой и статической типизацией. Попытка использовать переменную без предварительного объявления приведёт к ошибке компиляции.

 package main   func main() { 	var x string = "Hello, world!" 	println(x) }

В этом примере для вывода приветствия используется строчная переменная. Она объявляется при помощи ключевого слова var, после имени указывается тип string. Знак равенства означает присваивание, запись значения в переменную.

Допустима сокращённая запись, без указания типа и слова var. В этом случае перед знаком равенства ставится двоеточие (получается := вместо =). И компилятор определяет тип по значению, которое присваивается.

Правильное именование переменных – важная часть разработки. Имена должны начинаться с буквы и могут содержать буквы, цифры и знак _ (подчёркивание). Имя должно быть мнемоническим – то есть «говорящим», объясняющим назначение переменной.

 package main   func main() { 	hello := "Hello, world!" 	println(hello) }

Узнаём про условия и циклы

В программировании часто требуется выполнять одну или другую группу команд в зависимости от результата проверки (ветвление). Такую возможность предоставляет оператор if.

 package main   func main() {     water := 0     println("Take a kettle")     if water == 0 {         println("Pour water into the kettle")     } else {         println("Enough water")     }     println("Put the kettle on fire") }

Эта программа иллюстрирует ветвление, моделируя ситуацию с чайником. После ключевого слова if идёт логическое выражение (water == 0), где значение переменной water сравнивается с нулём на равенство. Если water равна нулю (в чайнике нет воды), то результат выражения будет true (истина). И, согласно заданному условию, будет выполнен блок команд в фигурных скобках после логического выражения. В противном случае – если результат выражения false – выполнится блок после else.

Помимо ветвлений в программировании используются циклы, позволяющие повторять группы (блоки) команд. Работу с циклами в Go обеспечивает оператор for. Его базовая форма содержит три фрагмента (инициализация, условие, приращение). Первый и последний фрагменты могут отсутствовать. Пустой for создаёт бесконечный цикл.

Ниже приводим код, который иллюстрирует классический for, с использованием счётчика i. Результатом его работы будет колонка чисел от 0 до 4 – значения счётчика цикла на каждой итерации (повторе).

 package main   func main() {     for i := 0; i < 5; i++ {         println(i)     } }

Импортируем пакеты

Один из важных принципов программирования – DRY: Don’t Repeat Yourself (не повторяйся). Это значит, что нам не нужно писать все модули своей программы с нуля. Вместо этого можно использовать уже готовые блоки или фрагменты, написанные кем-то ранее.

Поэтому Go поставляется с богатой библиотекой, которая содержит множество пакетов (packages). Каждый пакет имеет определённую тематику, на которую указывает его имя, и содержит соответствующие функции. Подробную документацию с описанием всех пакетов и функций можно найти на сайте Go в разделе “Packages”.

Если мы хотим использовать ту или иную функцию, нужно импортировать соответствующий пакет. К примеру, функции форматированного ввода-вывода содержатся в пакете fmt. Чтобы их применить, нужно добавить в код команду импорта, указывая имя пакета, и через точку после него вызывать нужную функцию.

 package main   import "fmt"   func main() {     fmt.Println("Hello,", "world!") }

Создаём игру «Угадай число»

Наших знаний Go уже достаточно, чтобы написать игру «Угадай число». В ней компьютер загадывает целое число от 0 до 9, а человек должен отгадать его с трёх попыток.

Нам потребуются функции из пакета fmt для ввода-вывода и функция генерации случайных чисел из пакета rand.

 import "fmt" import "math/rand" 

Объявим и инициируем три целочисленные переменные: счётчик неудачных попыток – count, ввод числа с консоли – guess, загаданное число – number.

 count := 0 guess := -1 number := rand.Intn(10)

Опишем основной игровой цикл. Условие его повторения описано после слова for. Тело цикла повторяется, пока значение счётчика неудачных попыток не достигнет числа 3 и при этом “загаданное” число ещё не будет отгадано.

В теле цикла читаем число-догадку с консоли и сравниваем с загаданным. В случае несовпадения выводим подсказку (больше или меньше) и увеличиваем счётчик неудачных попыток на 1. В случае совпадения цикл прекратится.

 for count < 3 && guess != number {     fmt.Print("Guess the number (0..9): ")     fmt.Scanln(&guess)     if guess != number {         if guess < number {             fmt.Println("Your number is less")         } else {             fmt.Println("Your number is bigger")         }         count++     } }

Также понадобится вывести результат игры (победа или проигрыш) после завершения игрового цикла.

 if guess == number {     fmt.Println("Your WON!") } else {     fmt.Println("Your lose...") }

Остаётся правильно собрать все эти фрагменты в одном файле – и можно пробовать сыграть с компьютером.

Заключение

Если у вас всё получилось – поздравляю. Если нет или возникли вопросы – пишите мне, не стесняйтесь. Меня можно найти в Telegram под ником @biblelamp или на сайте GeekBrains. Я желаю всем удачи и рекомендую никогда не останавливаться в изучении программирования.

А тех, кто решил досконально освоить язык Go, мы приглашаем на факультет Go-разработки. Вы научитесь решать реальные бизнес-задачи с помощью Go, а также добавите в портфолио несколько разноплановых проектов, с которыми можно смело идти к будущему работодателю.

 

Ссылка на первоисточник
наверх