Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

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

развернуть

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

Быстрый старт с 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, а также добавите в портфолио несколько разноплановых проектов, с которыми можно смело идти к будущему работодателю.

 


Ключевые слова: Книги
Опубликовано 03.03.2020 в 13:14
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Комментарии

Показать предыдущие комментарии (показано %s из %s)
Показать новые комментарии
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru

Последние комментарии

нет комментариев