Николай Прохоренок. Учебник Go
Язык Go является компилируемым языком. Для преобразования текстового файла с программой в исполняемый exe-файл потребуется установить на компьютер специальную программу — компилятор. Редакторы VS Code и Notepad++, который мы будем использовать для набора кода и сборки проектов из этого учебника Go.
Скачать учебник Go в формате PDF
На этом сайте публикуются не все статьи учебниика Go. Полный список статей доступен в учебнике в формате PDF. Оглавление можно посмотреть ниже. Ссылка для скачивания учебника Go доступна пользователям оплатившим 500 руб. (оплата банковской картой). Для заказа учебника Go в формате PDF пишите на почту unicross@yandex.ru
Пожертвовать
Покупка учебника в формате PDF отличный способ сказать спасибо автору за проделанный труд. Если вы хотите дополнительно помочь, то можно пожертвовать любую сумму. Пожертвования принимаются на электронный кошелек ЮMoney 410011140483022 (перейдите по ссылке
https://yoomoney.ru/to/410011140483022).
Оглавление учебника Go в формате PDF
Первые шаги
Работа с командной строкой
Добавление пути в переменную PATH
Установка Go
Первая программа
Компиляция и запуск программы
Структура программы
Комментарии в программе
Вывод данных
Форматированный вывод данных
Ввод данных
Получение данных из командной строки
Предотвращение закрытия окна консоли
Преждевременное завершение выполнения программы
Переменные и типы данных
Объявление переменной
Инициализация переменной
Объявление сразу нескольких переменных
Сокращенный формат объявления переменных
Присваивание значения переменной
Именование переменных
Специальная переменная-заглушка
Типы данных в языке Go
Определение размера типа
Оператор type
Сохранение в переменной данных произвольного типа
Динамическое определение типа данных
Приведение типов
Указатели
Константы
Области видимости переменных
Динамическое выделение памяти
Операторы и циклы
Математические операторы
Побитовые операторы
Операторы присваивания
Оператор запятая
Операторы сравнения
Приоритет выполнения операторов
Оператор ветвления if
Оператор выбора switch
Цикл for
Полный формат
Сокращенный формат
Бесконечное выполнение инструкций
Перебор элементов массива, словаря и строки
Оператор continue: переход на следующую итерацию цикла
Оператор break: прерывание цикла
Оператор goto
Числа
Указание значений
Математические константы
Основные функции для работы с числами
Округление чисел
Тригонометрические функции
Преобразование строки в число
Преобразование числа в строку
Генерация псевдослучайных чисел
Бесконечность и значение NAN
Комплексные числа
Массивы и слайсы
Массивы
Объявление и инициализация массива
Определение количества элементов
Получение и изменение значения элемента массива
Перебор элементов массива
Массивы указателей
Указатели на массивы
Создание копии массива
Многомерные массивы
Преобразование массива в строку
Проверка наличия значения в массиве
Слайсы
Объявление и инициализация слайса
Определение количества элементов
Получение и изменение значения элемента слайса
Добавление элементов
Перебор элементов слайса
Слайсы из указателей
Указатели на слайсы
Создание копии слайса
Многомерные слайсы
Преобразование слайса в строку
Поиск минимального и максимального значений
Сортировка слайса
Проверка наличия значения в слайсе
Переворачивание слайса
Срезы. Преобразование массива в слайс
Байтовые слайсы
Изменение регистра символов
Удаление пробельных символов
Преобразование байтового слайса в символьный
Повтор фрагмента несколько раз
Разбиение на фрагменты по разделителю
Преобразование двумерного слайса в одномерный
Замена фрагментов
Поиск фрагментов
Сравнение слайсов
Нормализация слайса
Определение количества символов
Байтовый буфер
Получение содержимого буфера
Добавление данных в буфер
Получение размера и емкости буфера
Изменение размера буфера
Запись содержимого буфера в поток
Структура Reader
Получение содержимого буфера
Замена содержимого буфера
Получение размера буфера
Запись содержимого буфера в поток
Словари и списки
Словари
Объявление и инициализация словаря
Определение количества элементов
Получение и изменение значения элемента словаря
Добавление элементов
Проверка существования ключа
Удаление элемента из словаря
Перебор элементов словаря
Создание копии словаря
Указатели на словари
Преобразование словаря в строку
Двусвязные списки
Создание списка
Добавление элементов
Получение указателей на элементы
Определение количества элементов списка
Удаление элементов из списка
Перемещение элементов
Перебор элементов списка
Символы и строки
Символы
Объявление символа
Специальные символы
Изменение регистра символов
Проверка типа содержимого символа
Проверка валидности символа
Преобразование символа в строку
Строки
Объявление строки
Преобразование строки в слайс и обратно
Определение длины строки
Доступ к элементам строки
Перебор элементов строки
Проверка валидности строки
Конкатенация строк
Форматирование строк
Изменение регистра символов
Удаление пробельных символов
Повтор фрагмента несколько раз
Разбиение на фрагменты по разделителю
Преобразование строкового слайса в строку
Замена фрагментов
Поиск фрагментов
Сравнение строк
Нормализация строки
Указатели на строки
Получение фрагмента строки
Структура Builder
Получение содержимого буфера
Добавление данных в буфер
Получение размера и емкости буфера
Очистка буфера
Структура Reader
Получение содержимого буфера
Замена содержимого буфера
Получение размера буфера
Запись содержимого буфера в поток
Регулярные выражения
Создание шаблона регулярного выражения
Синтаксис регулярных выражений
Экранирование специальных символов
Модификаторы
Метасимволы
Стандартные классы
Квантификаторы
«Жадность» квантификаторов
Группы
Проверка соответствия шаблону
Поиск полного соответствия шаблону
Поиск всех соответствий шаблону
Замена фрагментов
Разделение строки на фрагменты по шаблону
Работа с датой и временем
Структура Time
Создание объекта
Преобразование объекта в метку времени UNIX
Преобразование объекта в строку
Получение отдельных значений даты и времени
Сравнение объектов
Преобразование часовых поясов
Тип данных Duration
Указание значения
Получение значения
Изменение момента времени
«Засыпание» программы
Измерение времени выполнения фрагментов кода
Пользовательские функции
Создание функции и ее вызов
Способы возврата значения из функции
Возврат одного значения
Возврат нескольких значений
Именованные возвращаемые значения
Способы передачи параметров в функцию
Передача массивов и слайсов в функцию
Передача данных произвольных типов
Переменное количество параметров
Сохранение в переменной ссылки на функцию
Передача в функцию ссылки на другую функцию
Анонимные функции
Замыкание
Рекурсия
Инструкция defer
Объектно-ориентированное программирование
Основные понятия
Объявление структуры
Создание экземпляра структуры
Доступ к полям структуры
Приватные и публичные поля
Имитация конструктора
Анонимные структуры
Пустые структуры
Вложенные структуры
Указатели на структуры и поля
Передача структур в функцию
Методы структур
Методы пользовательских типов
Композиция структур
Интерфейсы
Создание интерфейса
Композиция интерфейсов
Пустые интерфейсы
Теги
Преобразование объекта в строку
Формат JSON: преобразование объекта в строку и обратно
Пакеты и модули
Инструкция package: объявление пакета
Инструкция import: импорт пакета
Разделение пакета на файлы
Создание модуля
Создание пользовательского пакета
Установка модулей
Обновление и удаление зависимостей
Функция init()
Обработка ошибок
Типы ошибок
Интерфейс error: описание ошибки
Функция panic(): генерация паники
Функция recover(): обработка паники
Способы поиска ошибок в программе
Отладка программы в редакторе Visual Studio Code
Тестирование
Протоколирование
Чтение и запись файлов
Открытие и закрытие файла
Указание пути к файлу
Запись в файл
Чтение из файла
Файлы произвольного доступа
Изменение длины содержимого файла
Создание временных файлов
Стандартные потоки ввода/вывода
Перенаправление ввода/вывода
Структура Writer: запись в файл
Структура Reader: чтение из файла
Структура ReadWriter: запись в файл и чтение из файла
Структура Scanner: построчное чтение из файла
Преобразование кодировок
Русские кодировки
Кодировка UTF-16
Кодировка UTF-32
Работа с файловой системой
Пакет path/filepath: преобразование пути
Переименование и удаление файла
Права доступа к файлу и каталогу
Получение информации о файле и каталоге
Функции для работы с каталогами
Перебор объектов, расположенных в каталоге
Получение информации об операционной системе
Работа с MySQL
Установка драйвера
Регистрация драйвера и подключение к базе данных
Создание таблицы
Добавление записей
Обновление и удаление записей
Получение записей
Обработка значения NULL
Получение информации о таблице
Транзакции
Работа с изображениями
Получение информации об изображении
Загрузка изображения из файла
Сохранение изображения в файл
Формат JPEG
Формат PNG
Формат GIF
Вспомогательные структуры и интерфейсы
Структура Point: координаты точки
Структура Rectangle: прямоугольная область
Интерфейс image.Image: изображение
Интерфейс Model: цветовая модель
Интерфейс Color: цвет в формате RGBA
Структуры, описывающие цвет в различных форматах
Преобразование цвета из одного формата в другой
Создание изображения
Формат RGBA
Формат RGBA64
Формат NRGBA
Формат NRGBA64
Формат CMYK
Формат YCbCr
Формат NYCbCrA
Формат Gray
Формат Gray16
Формат Alpha
Формат Alpha16
Формат Paletted
Формат Uniform
Пакет image/draw
Интерфейс draw.Image: изменяемое изображение
Интерфейс RGBA64Image: изменяемое изображение
Интерфейс Drawer
Интерфейс Quantizer
Функция Draw()
Функция DrawMask()
Многопоточные приложения
Запуск задачи в отдельном потоке
Ожидание завершения всех потоков
Синхронизация потоков с помощью мьютексов
Структура Map: потокобезопасный словарь
Структура Once: выполнение функции один раз
Каналы
Небуфферизированные каналы
Буфферизированные каналы
Закрытие канала
Цикл for...range
Каналы только для чтения
Каналы только для записи
Возврат канала из функции
Канал в качестве типа данных канала
Пустая структура в качестве типа данных канала
Оператор select
Функция After()
Функция Tick()
Прерывание работы потока
Взаимодействие с Интернетом
Структура URL: URL-адрес
Тип Values: строка запроса
Кодирование и декодирование строки запроса
Структура Userinfo: имя пользователя и пароль
Пакет path: разбор пути
Отправка запроса методом GET
Отправка запроса методом POST
Отправка файла методом POST
Отправка запроса методом HEAD
Структура Response: ответ сервера
Тип Header: словарь с HTTP-заголовками
Структура Cookie: cookies
Структура Client: HTTP-клиент
Структура Request: HTTP-запрос
Отправка запроса методом GET с произвольными настройками
Отправка запроса методом POST с произвольными настройками
Веб-сервер на Go
Запуск и остановка веб-сервера
Интерфейс ResponseWriter: ответ веб-сервера
Маршрутизация
Функция Handle()
Функция HandleFunc()
Перенаправление запроса
Отправка cookies
Отправка статических файлов
Получение данных формы
Замена специальных символов HTML-эквивалентами
Шаблоны