1. Основы языка Go: настройка окружения, переменные и управление потоком выполнения
Основы языка Go: настройка окружения, переменные и управление потоком выполнения
Добро пожаловать в курс «Go для начинающих: от основ к практике». Мы начинаем наше путешествие в мир одного из самых востребованных и эффективных языков программирования современности. Эта статья станет фундаментом, на котором мы будем строить сложные системы в будущем.
Что такое Go и почему он стал популярным?
Язык Go (часто называемый Golang) был разработан внутри компании Google в 2007 году, а в 2009 году представлен публике. Его создатели — легенды компьютерных наук: Роб Пайк, Кен Томпсон и Роберт Гризмер. Они стремились создать язык, который сочетал бы в себе производительность C++ и простоту чтения кода, свойственную Python.
!Диаграмма Венна, показывающая баланс качеств языка Go
Ключевые особенности Go:
* Компилируемость: Код преобразуется в машинный код, что обеспечивает высокую скорость выполнения. * Строгая статическая типизация: Ошибки типов выявляются на этапе компиляции, а не во время работы программы. * Встроенная конкурентность: Go изначально создавался для работы с многоядерными процессорами и сетевыми системами. * Минимализм: В языке мало ключевых слов, что делает его легким для изучения.
Настройка окружения
Прежде чем писать код, нам нужно подготовить инструменты. Процесс установки Go максимально упрощен.
Шаг 1: Установка Go
Чтобы проверить, что установка прошла успешно, откройте терминал (или командную строку) и введите:
Вы должны увидеть сообщение, похожее на go version go1.21.0 darwin/arm64.
Шаг 2: Выбор редактора кода
Хотя код можно писать в блокноте, для комфортной работы я рекомендую использовать специализированные инструменты:
* VS Code: Бесплатный, легкий и мощный редактор. Обязательно установите официальное расширение «Go» от команды Go Team at Google. * GoLand: Полноценная IDE от JetBrains. Платная, но очень умная среда разработки.
Ваша первая программа
По традиции начнем с программы «Hello, World!». Создайте файл с названием main.go и напишите в нем следующий код:
Разбор структуры программы
Давайте разберем каждую строчку, так как это скелет любого приложения на Go.
package main: Эта строка объявляет, к какому пакету относится файл. Пакет main — особенный. Он сообщает компилятору, что эта программа должна компилироваться в исполняемый файл, а не в библиотеку.import "fmt": Команда подключения внешних пакетов. Пакет fmt (от слова format) отвечает за форматирование ввода и вывода (например, вывод текста на экран).func main() { ... }: Функция main — это точка входа в программу. Выполнение кода всегда начинается именно с неё.Чтобы запустить программу, откройте терминал в папке с файлом и введите:
Переменные и типы данных
Go — язык со строгой статической типизацией. Это значит, что каждая переменная имеет определенный тип, который не может измениться в процессе выполнения.
Объявление переменных
Существует два основных способа создания переменных.
1. Полная форма (через ключевое слово var):
Используется, когда мы хотим явно указать тип или объявить переменную без начального значения.
2. Краткая форма (через :=):
Самый популярный способ внутри функций. Go сам определяет тип переменной на основе значения справа.
> Важно: Краткую форму := можно использовать только внутри функций. На уровне пакета (вне функций) всегда используется var.
Базовые типы данных
Вот основные типы, с которыми вы будете работать чаще всего:
* bool: логический тип (true или false).
* string: строка (набор символов в кодировке UTF-8).
* int, int64: целые числа.
* float64: числа с плавающей точкой.
Zero Values (Нулевые значения)
В Go нет понятия «неинициализированная переменная» с мусором в памяти. Если вы объявили переменную, но не присвоили ей значение, она автоматически получает «нулевое значение» для своего типа:
* 0 для чисел.
* false для bool.
* "" (пустая строка) для string.
* nil для указателей и сложных структур.
Пример:
Операторы
Операторы в Go похожи на другие C-подобные языки.
Арифметические операторы
* + (сложение)
* - (вычитание)
(умножение)
* / (деление)
* % (остаток от деления)
Обратите внимание на деление целых чисел. Если вы делите два целых числа, результат тоже будет целым (дробная часть отбрасывается).
Логические операторы
Используются для построения условий:
* && (логическое И)
* || (логическое ИЛИ)
* ! (логическое НЕ)
Управление потоком выполнения
Программа редко бывает линейной. Нам нужно принимать решения и повторять действия. Для этого в Go есть условные операторы и циклы.
Условный оператор if / else
Синтаксис if в Go прост и лаконичен. Круглые скобки вокруг условия не нужны, но фигурные скобки {} обязательны.
Особенность Go: в if можно добавить краткую инструкцию перед проверкой условия. Это часто используется для обработки ошибок.
Конструкция switch
Если у вас много условий, switch будет чище и понятнее, чем множество if-else.
Важное отличие от других языков: В Go не нужно писать break в конце каждого case. Выполнение кода автоматически прерывается после выполнения подходящего блока. Если вы хотите, чтобы выполнение перешло к следующему блоку (как в C++), нужно явно написать ключевое слово fallthrough.
Циклы: только for
В Go есть только одно ключевое слово для циклов — for. Но оно покрывает все сценарии, для которых в других языках используются while и do-while.
!Три варианта синтаксиса цикла for в Go
1. Классический цикл (как в C/Java):
2. Цикл с условием (аналог while):
Мы просто опускаем инициализацию и пост-действие.
3. Бесконечный цикл:
Если убрать все условия, цикл будет выполняться вечно. Это часто используется для серверов, которые должны работать постоянно.
Для управления циклами используются стандартные команды:
* break: немедленно прерывает цикл.
* continue: пропускает текущую итерацию и переходит к следующей.
Заключение
Мы рассмотрели фундамент языка Go. Вы научились настраивать окружение, создавать переменные, работать с типами данных и управлять логикой программы с помощью условий и циклов. Эти знания — база, без которой невозможно двигаться дальше.
В следующей статье мы углубимся в одну из самых мощных концепций программирования — функции, а также узнаем, как Go работает со строками.