Основы языка Go: синтаксис, переменные, циклы и функции
Основы языка Go: синтаксис, переменные, циклы и функции
Язык программирования Go (или Golang) был разработан внутри компании Google для решения проблем масштабирования и поддержки огромных кодовых баз. Его главная философия — минимализм и предсказуемость. В отличие от многих других языков, Go не предлагает десять способов сделать одно и то же. Он предлагает один, но самый понятный и эффективный путь.
В основе языка лежит статическая типизация. Это означает, что тип каждой переменной известен еще до запуска программы, на этапе компиляции. Такой подход позволяет отлавливать большинство ошибок до того, как код попадет на рабочие серверы.
Базовый синтаксис и структура программы
Любая программа на Go состоит из пакетов. Пакет — это способ группировки связанного кода. Исполняемые программы всегда начинаются с пакета под названием main.
Синтаксис языка программирования — это набор строгих правил, определяющих комбинации символов, которые компилятор считает правильно структурированной программой.
Рассмотрим минимальный каркас приложения:
package main
import "fmt"
func main() {
fmt.Println("Система запущена. Код статуса:", 200)
}
Обратите внимание на отсутствие точек с запятой в конце строк. Компилятор Go расставляет их автоматически в процессе сборки. Это делает код визуально чище. Однако из-за этого правила открывающая фигурная скобка { всегда должна находиться на той же строке, что и объявление функции или условия.
Переменные и типы данных
Переменная — это именованная область в памяти компьютера, где хранятся данные. В Go есть два основных способа объявить переменную: классический и краткий.
Классическое объявление использует ключевое слово var:
var userAge int = 25
var userName string = "Алексей"
Краткое объявление использует оператор := и позволяет компилятору самостоятельно определить тип данных на основе присвоенного значения. Этот способ применяется чаще всего внутри функций:
userAge := 25
userName := "Алексей"
Основные типы данных
Go предлагает богатый набор встроенных типов. Для наглядности сравним самые часто используемые из них.
| Тип данных | Описание | Нулевое значение | Пример |
|---|---|---|---|
int |
Целые числа (положительные и отрицательные) | 0 |
150000 |
float64 |
Числа с плавающей точкой (дроби) | 0.0 |
99.99 |
string |
Строки (текст) | "" (пустая строка) |
"Привет" |
bool |
Логический тип (истина или ложь) | false |
true |
Важной особенностью Go являются нулевые значения (zero values). Если вы объявите переменную, но не присвоите ей значение, она не будет содержать неизвестный мусор или вызывать ошибку. Она получит значение по умолчанию. Например, var balance float64 автоматически сделает баланс равным 0.0.
Управляющие конструкции: условия и циклы
Для управления потоком выполнения программы используются условные операторы и циклы.
Условный оператор if
Синтаксис if в Go лишен круглых скобок вокруг условия, что делает его лаконичным:
userAge := 20
if userAge >= 18 {
fmt.Println("Доступ разрешен")
} else {
fmt.Println("Доступ запрещен")
}
В математическом смысле условие проверяет истинность выражения. Если возраст , выполняется первый блок кода. Если , программа переходит в блок else.
Цикл for
Создатели Go приняли радикальное решение: в языке есть только один вид цикла — for. Он заменяет собой while, do-while и foreach из других языков.
Классический цикл со счетчиком выглядит так:
for i := 0; i < 5; i++ {
fmt.Println("Итерация номер:", i)
}
Если убрать инициализацию и шаг, for превращается в аналог while:
attempts := 3
for attempts > 0 {
fmt.Println("Осталось попыток:", attempts)
attempts--
}
Функции: основа структурирования кода
Функция — это независимый, переиспользуемый блок кода, который выполняет конкретную задачу. Функции помогают разбить сложную программу на мелкие и понятные детали.
Объявление функции начинается с ключевого слова func, за которым следует имя, параметры в скобках и тип возвращаемого значения:
func calculateDiscount(price float64, discount float64) float64 {
return price - (price * discount / 100)
}
Если товар стоит 5000 руб., а скидка составляет 20%, вызов calculateDiscount(5000, 20) вернет 4000 руб.
Множественный возврат значений
Одной из самых мощных и любимых разработчиками особенностей Go является способность функции возвращать сразу несколько значений. Это элегантно решает проблему обработки ошибок.
Пример функции, которая делит числа и возвращает результат вместе с возможной ошибкой:
import "errors"
func divide(a float64, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("деление на ноль невозможно")
}
return a / b, nil
}
При вызове такой функции разработчик обязан принять оба значения:
result, err := divide(10, 2)
if err != nil {
fmt.Println("Ошибка:", err)
} else {
fmt.Println("Результат:", result)
}
Как знание основ проверяют на собеседованиях в 2026 году
Рынок IT в России продолжает развиваться, и требования к Junior-разработчикам становятся более структурированными. Поиск первой работы — это такой же проект, как и написание программы.
Знание базового синтаксиса, переменных и циклов — это фундамент, без которого невозможно пройти техническое интервью. Вот как эти знания применяются на практике при поиске работы:
- Составление резюме: Не пишите просто «Знаю Go». Укажите конкретику: «Уверенное владение синтаксисом Go, понимание строгой типизации, работа с множественным возвратом значений и обработкой ошибок». Это покажет рекрутеру, что вы понимаете терминологию.
- Лайвкодинг (Live Coding): На собеседованиях вас часто просят решить алгоритмическую задачу в реальном времени. В 90% случаев для решения достаточно использовать переменные, один цикл
forи пару условийif. Например, задача на поиск максимального числа в массиве проверяет именно умение правильно инициализировать переменную (не нулем, а первым элементом) и пройтись по данным циклом. - Теоретические вопросы: Вас обязательно спросят про zero values. Вопрос «Что выведет программа, если объявить
var x int, но не присвоить значение?» является классическим фильтром для новичков. - Поиск вакансий: В 2026 году основные платформы для поиска работы в РФ (HeadHunter, Хабр Карьера) активно используют автоматические тесты на знание синтаксиса перед тем, как ваше резюме попадет к живому человеку. Твердое знание основ позволит вам проходить эти фильтры с максимальным баллом.
Понимание того, как работают переменные в памяти и как правильно выстраивать циклы, отличает вдумчивого инженера от человека, который просто копирует код из интернета.