1. Фундамент Golang: синтаксис, структуры данных, интерфейсы и философия языка
Фундамент Golang: синтаксис, структуры данных, интерфейсы и философия языка
Добро пожаловать в курс «Golang Developer & QA». Это первая статья, и мы начнем с самого главного — фундамента. Golang (или просто Go) — это язык, который изменил подход к современной бэкенд-разработке и автоматизации тестирования. Он был создан в Google такими легендами информатики, как Роб Пайк, Кен Томпсон и Роберт Гризмер, с конкретной целью: сделать разработку программного обеспечения эффективной, быстрой и, что самое важное, простой.
В этой статье мы разберем синтаксис, ключевые структуры данных и философию, которая делает Go уникальным инструментом как для разработчиков, так и для QA-инженеров.
Философия Go: Простота как суперсила
Главный девиз Go — простота. В языке намеренно отсутствуют многие функции, присущие другим современным языкам (например, наследование классов, перегрузка операторов или исключения в привычном виде). Это сделано для того, чтобы код был читаемым и предсказуемым.
> Go is not meant to be a research language. It is meant to be a language for getting work done. > — Роб Пайк, один из создателей Go
Ключевые особенности:
* Компилируемый язык: Go компилируется в машинный код, что обеспечивает высокую производительность. * Статическая типизация: Типы проверяются на этапе компиляции, что предотвращает множество глупых ошибок. * Сборка мусора (Garbage Collection): Разработчику не нужно вручную управлять памятью, как в C++. * Встроенная конкурентность: Горутины (goroutines) и каналы делают написание многопоточных программ невероятно простым.
Первая программа и структура файла
Любая программа на Go состоит из пакетов. Точкой входа всегда является пакет main и функция main.
Разберем по строкам:
package main: Объявляет, что этот файл принадлежит пакету main (исполняемая программа).import "fmt": Подключает стандартную библиотеку форматирования ввода-вывода.func main() { ... }: Главная функция, с которой начинается выполнение программы.Переменные и типы данных
Go — язык со строгой статической типизацией. Это значит, что если переменная объявлена как число, вы не сможете записать в нее строку.
Существует два основных способа объявления переменных:
Базовые типы:
* bool: true или false.
* string: Строки (в кодировке UTF-8).
* int, int64, float64: Числовые типы.
Управляющие конструкции
В Go синтаксис управления потоком сведен к минимуму.
Цикл For
В Go есть только один цикл —for. Нет ни while, ни do-while.Условный оператор If
Особенностьif в Go — отсутствие круглых скобок вокруг условия.Структуры данных: Массивы, Слайсы и Мапы
Для работы с данными в бэкенде и тестах вам постоянно придется использовать коллекции.
Массивы (Arrays)
Массив имеет фиксированную длину. Это не самый гибкий инструмент, поэтому используется редко.Слайсы (Slices)
Слайс — это динамическая обертка над массивом. Это основной инструмент работы со списками в Go.!Структура слайса: указатель на массив, текущая длина и общая вместимость
Слайс состоит из трех компонентов:
Мапы (Maps)
Мапа — это неупорядоченная коллекция пар «ключ-значение» (аналог Dictionary в Python или HashMap в Java). Поиск элемента в мапе очень быстрый.Сложность поиска в мапе в среднем составляет , где — константное время выполнения, не зависящее от количества элементов в мапе.
Структуры и Интерфейсы: ООП по-новому
В Go нет классов и наследования. Вместо этого используются Структуры (Structs) и Композиция.
Структуры
Структура — это типизированная коллекция полей.Интерфейсы
Интерфейсы в Go реализованы неявно. Если тип реализует все методы интерфейса, он автоматически удовлетворяет этому интерфейсу. Не нужно писатьimplements.Это дает огромную гибкость при написании моков (mock) для автотестов.
Почему Go идеален для QA Automation?
testing идет «из коробки». Вам не нужно устанавливать JUnit или PyTest, чтобы начать писать тесты.Пример простейшего теста в файле main_test.go:
Ресурсы для изучения
Чтобы стать профессионалом, одной статьи мало. Вот список проверенных материалов, которые помогут вам углубиться в тему:
Книги
Онлайн-ресурсы
* A Tour of Go (tour.golang.org) — Интерактивный тур по языку от создателей. Обязателен к прохождению. * Go by Example (gobyexample.com) — Примеры кода на все случаи жизни. * Effective Go — Официальное руководство по написанию идиоматичного кода.В следующей статье мы подробно разберем настройку окружения и напишем наш первый полноценный REST API сервис.