Установка Go
Заходим на официальный сайт Go.
Нажимаем на Download Go.
Выбираем версию для своей операционной системы и скачиваем.
Пользователям Windows нужно запустить установщик. Если вы используете Linux, придется распаковать скачанный архив в /usr/local/go
и экспортировать путь /usr/local/go/bin
в переменную среды $PATH
. Получиться должна примерно следующая структура папок:
Чтоб убедиться в успешной установке введите команду go version
в консоли или терминале:
Установка редактора кода
Go поддерживается в различных редакторах кода (IDE), к примеру:
- Goland
- Visual Studio Code
- vim
Полный список IDE доступен по сылке: https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
Создание проекта
Создадим директорию helloworld
. Перейдем в нее и выполним команду:
Должен появиться файл с названием go.mod
.
go.mod
в корне. Этот файл определяет путь модуля и набор импортируемых модулей.Далее создадим файл main.go
и запишем в него следующий код:
Компиляция и запуск программы
Чтобы запустить код, откройте консоль или терминал. Далее перейдите в каталог, где расположен файл main.go
и выполните команду:
Результат работы программы будет следующим:
Вы написали первую программу на Go, поздравляем!
Давайте разберем, что здесь происходит:
- Функция
main
– входная точка программы. С нее основная программа начинается и в ней же завершается. println
– функция, выводящая текст на экран консоли. Для вызова используется следующий синтаксис:название функции + открывающая круглая скобка + аргументы функции + закрывающая круглая скобка + операторные скобки {}
.- По достижении последней фигурной скобки функции
main
программа завершается.
Код, листинги которого будут приведены ниже, должны располагаться внутри фигурных (операторных) скобок функции main
. В примерах функция main
будет опущена для краткости.
Переменные
Переменные в Go характеризуются названием и типом, они должны объявляться до первого использования.
Объявление переменной в Go:
Мы объявили переменную number с типом int
. int
– тип переменной, которая хранит целое число.
Базовые типы данных:
- bool
- string
- int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
- byte // псевдоним для uint8
- rune // псевдоним для int32
- float32 float64
- complex64 complex128
При объявлении переменной устанавливается ее начальное значение. Для int
это 0, для float
– 0.0, для string
– "" (пустая строка), для bool
– false
.
Если начальное значение переменной известно во время объявления, можно воспользоваться краткой записью:
Чтобы записать значение в переменную после ее объявления, воспользуйтесь оператором =
:
Над переменными можно производить операции с помощью операторов. Например, числа можно сравнить, а строки конкатенировать.
Список операторов Go:
Управляющие конструкции
Для управления тем, какие строки кода исполнятся и в каком порядке, существуют специальные конструкции. Давайте перечислим основные:
- Следование
- Условие
- Циклы
Следование
Весь код исполняется последовательно, строка за строкой.
Условие
Для исполнения участка кода в зависимости от условия используется условная конструкция if
:
Сообщение не будет выведено на экран, так как условие ложно. На месте условия может использоваться все, результатом чего будет значение типа bool
.
Чтобы определить код, который выполнится при невыполнении ни одного условия можно добавить else
:
Дополнительно к конструкции управления if
имеется конструкция switch
, работающая подобным образом:
switch
получает значение 200 и ищет case
, в котором значения совпадают и выполняет только определенный участок кода.
switch
также может использоваться как замена if
. Перепишем пример с
if
:
Роль else
здесь играет слово default
. Оно также будет выполнено при невыполнении ни одного из условий.
Циклы
Обратите внимание: для повторения участков кода в Go используется только цикл for
, который может принимать разные формы:
Этот цикл распечатает значения от 1 до 10.
Если нужен цикл без счетчика, нужно опустить первую и третью части цикла for
вместе с точкой запятой:
На каждом повторении цикла будет проверяться заданное условие. Пока условие истинно, цикл будет продолжаться. Как только условие станет ложным, он прервется.
Для бесконечного цикла можно опустить условие:
Чтобы остановить цикл, используется ключевое слово break
:
При достижении конструкции break
цикл будет завершен.
Внутри цикла также можно использовать специально слово continue
. Оно отличается от break
тем, что не сразу завершает цикл, а лишь пропускает оставшийся код цикла и начинает новое повторение.
Массивы
Объявление массива:
Обращение к элементам массива производится по имени массива и индексу элемента. Элементы массива индексируются с нуля.
Заполнение массива значениями:
Если начальное значение массива известно при объявлении, можно воспользоваться литералом объявления массива:
Для избежания лишнего кода воспользуемся кратким объявлением:
Размер массива статичен и не может меняться во время выполнения программы. Для этих целей используются слайсы.
Слайсы
Слайс является более удобной альтернативой массиву. Объявление слайса отличается от объявления массива только отсутствием размера:
Слайс может менять размер во время выполнения программы. Для добавления новых элементов в слайс используется встроенная функция append
:
Функции
Для переиспользования часто используемого кода нужны функции.
println
для вывода значений на экран.Функция должна быть объявлена вне функции main
:
После ключевого слова func
указывается название функции. Далее в круглых скобках аргументы, которые принимает функция. После закрывающей круглой скобки указывается одно или несколько возвращаемых значений функции, а затем следует код функции в операторных скобках.
Функция Sum
складывает два числа и возвращает результат:
Функция SumAndDivide
возвращает как сумму, так и частное чисел:
Обе функции доступны в функции main:
Пакеты
Писать код большой программы в одном файле неудобно. Тем более переиспользовать этот код нельзя. Поэтому код разбивается на пакеты – наборы файлов с расширением .go
и кодом, который можно импортировать и переиспользовать. Стандартная библиотека языка Go содержит много часто используемых и важных пакетов. Например, в пакете strings
содержатся функции для работы со строками.
Импорт и использование пакета strings
:
Ключевое слово import
нужно для импорта используемых пакетов. Чтобы использовать функции из пакета strings
, нужно:
- написать название пакета;
- поставить точку;
- вызвать нужную функцию из пакета.
Первое серверное приложение “Hello Web”
В пакете http
содержится все необходимое для создания веб-сервера.
Запустите код. Далее откройте браузер и перейдите по адресу http://localhost:9999/. Вы получите сообщение “Hello Web!”
Функция http.HandleFunc
устанавливает функцию HelloWeb
, по пути /
, а http.ListenAndServe
запускает сервер по указанному адресу.
Если вы перейдете по указанному адресу, вызовется функция HelloWeb
. Функция принимает два аргумента – сам запрос и переменную, позволяющую ответить на запрос. В строке w.Write([]byte(“Hello Web”))
мы отвечаем на запрос обычной строкой.
Поздравляем, вы написали ваш первый веб-сервер на Go!
Литература
- «Изучаем Go» – Head First, Джек Макгаврен.
- «Язык программирования Go» – Алан А. А. Донован, Брайан У. Керниган.
- «Go на практике» – Батчер Мэтт, Фарина Мэтт.
Онлайн ресурсы
- https://golang.org/ – официальный сайт.
- https://tour.golang.org/welcome/1 – тур по языку Go.
- https://go.dev/ – оффициальный портал об экосистеме языка.
Go в “Библиотеке Программиста”
- телеграм-канал Библиотека Go-разработчика
- подписывайтесь на тег Go, чтобы получать уведомления о новых постах на сайте
Мы пробежались по основам Go: переменные, операторы, управляющие конструкции, функции.
Ценностями языка являются:
- Простота
- Эффективность
- Надежность
- Продуктивность
- Дружелюбность
Go современный, широко используемый и востребуемый язык программирования, который стоит начать изучать прямо сейчас.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
- изучите сленг, на котором говорят все разработчики независимо от языка программирования: язык алгоритмов и структур данных;
- научитесь применять алгоритмы и структуры данных при разработке программ;
- подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.
Комментарии