1. Основы языка и инструменты: пишем первый консольный калькулятор
Основы языка и инструменты: пишем первый консольный калькулятор
Добро пожаловать в курс Go на практике. Мы не будем тратить время на скучную теорию без дела. Философия этого курса проста: мы изучаем концепцию и сразу же применяем её в реальном коде. К концу курса вы пройдете путь от «Hello World» до написания собственных микросервисов.
Сегодня мы начнем с фундамента. Мы настроим окружение, разберем структуру Go-программы и напишем ваш первый полезный инструмент — консольный калькулятор.
Почему Go?
Язык Go (или Golang) был разработан в Google для решения конкретных проблем: долгая сборка проектов, сложная работа с зависимостями и трудности в написании конкурентного кода.
Go — это компилируемый, статически типизированный язык. Это значит, что:
Установка инструментов
Прежде чем писать код, нам нужно подготовить рабочее место.
1. Компилятор Go
Зайдите на официальный сайт Go и скачайте установщик для вашей операционной системы (Windows, macOS или Linux). Установка проходит в режиме «Далее — Далее — Готово».Чтобы проверить, что всё прошло успешно, откройте терминал (или командную строку) и введите:
Вы должны увидеть что-то вроде go version go1.21.0 ....
2. Среда разработки (IDE)
Писать код в блокноте можно, но больно. Я рекомендую два варианта: VS Code: Бесплатный, легкий. Обязательно установите расширение Go* от команды Go Team. * GoLand: Платный (есть пробный период), мощный, от JetBrains. Идеален для больших проектов.Анатомия Go-программы
Любая программа на Go имеет четкую структуру. Давайте создадим файл main.go и напишем классический приветственный код, чтобы разобрать его по косточкам.
Разберем каждую строку:
package main: Эта строка говорит компилятору, что этот файл — исполняемая программа, а не библиотека. Точка входа в любую программу на Go всегда находится в пакете main.import "fmt": Мы подключаем пакет fmt (format). В Go очень богатая стандартная библиотека. Пакет fmt отвечает за ввод и вывод данных (печать текста на экран).func main() { ... }: Это главная функция. Когда вы запускаете программу, выполнение кода начинается именно отсюда.!Структура базового файла на языке Go
Переменные и типы данных
Для нашего калькулятора нам нужно где-то хранить числа и операцию, которую выбрал пользователь. Для этого нужны переменные.
В Go есть два основных способа создать переменную:
1. Полная декларация
Используется ключевое словоvar. Мы явно указываем имя и тип.2. Краткая декларация (Магия Go)
Внутри функций можно использовать оператор:=. Go сам догадается, какой тип у переменной, посмотрев на значение справа.> Важно: В Go нельзя создать переменную и не использовать её. Если вы напишете x := 10 и нигде потом не примените x, компилятор выдаст ошибку. Это заставляет писать чистый код.
Для калькулятора нам понадобятся:
* float64 — для чисел с плавающей точкой (ведь мы можем захотеть разделить 5 на 2).
string — для знака операции (+, -, , /).
Логика выбора: if и switch
Калькулятор должен уметь принимать решения. «Если пользователь ввел плюс, нужно сложить».
Конструкция if-else
Классическая проверка условия. Обратите внимание: круглые скобки вокруг условия в Go не нужны.Конструкция switch
Когда вариантов много (как операций в калькуляторе),switch подходит лучше. Он выглядит чище.В отличие от других языков (C++, Java), в Go не нужно писать break после каждого case. Go выполняет только один подходящий блок и выходит из switch.
Практика: Пишем консольный калькулятор
Теперь соберем всё вместе. Наша цель — программа, которая:
Создайте папку для проекта, откройте её в терминале и инициализируйте модуль (это создаст файл go.mod для управления зависимостями, хорошая привычка с самого начала):
Теперь создайте файл main.go и начнем писать код.
Шаг 1: Импорты и переменные
Мы используем float64, так как это стандартный тип для дробных чисел в Go.
Шаг 2: Чтение данных
Для ввода данных используем fmt.Scan. Эта функция считывает данные из консоли и кладет их в переменную.
Почему &a? Символ & означает, что мы передаем не значение переменной (которое пока пустое), а адрес в памяти, где эта переменная лежит. Функция Scan пойдет по этому адресу и запишет туда то, что вы введете с клавиатуры.
Шаг 3: Логика вычислений
Теперь самое интересное. Используем switch для обработки операций.
Здесь мы добавили важную проверку. В математике деление на ноль не определено. Если мы попытаемся разделить на ноль, программа должна нас остановить.
Математически мы проверяем условие:
где — это делитель (второе введенное число). Если равно нулю, операция невозможна.
Также мы использовали fmt.Printf. Это «форматированный вывод». Символ %f заменяется на значение переменной res. \n означает перенос строки.
Полный код проекта
Вот что у вас должно получиться в файле main.go:
Небольшое улучшение: я заменил %f на %.2f в последней строке. Это скажет Go выводить только два знака после запятой, чтобы результат выглядел аккуратнее (например, 5.00 вместо 5.000000).
Запуск программы
У нас есть два пути запуска:
calculator.exe на Windows).
После этого вы можете запустить созданный файл как обычную программу.Попробуйте запустить свой калькулятор и посчитать что-нибудь!
Резюме
Сегодня вы сделали огромный шаг. Вы не просто узнали синтаксис, вы:
* Настроили профессиональное окружение.
* Поняли структуру Go-файлов (package, import, func).
* Научились работать с переменными и вводом/выводом.
* Написали работающую программу с логикой ветвления.
В следующей статье мы углубимся в структуры данных и узнаем, как хранить списки задач, массивы данных и создавать более сложные конструкции. Готовьтесь, будет интересно!