cpp

Учебник Go (Golang) на русском языке

Если вы хотите научиться программировать на языке Go, то эта книга для вас. В книге описан базовый синтаксис языка Go: типы данных, операторы, условия, циклы, работа с числами, строками, массивами и указателями, создание пользовательских функций и пакетов. Рассмотрены основные функции стандартной библиотеки языка Go.

Книга содержит большое количество практических примеров, помогающих начать программировать на языке Go самостоятельно. Весь материал тщательно подобран, хорошо структурирован и компактно изложен, что позволяет использовать книгу как удобный справочник.

Изучив основы языка Go по этой книге, вы легко сможете научиться программировать на восьми языках, которые обеспечивают выполнение большинства прикладных задач:

Требования к читателям: владение компьютером, знание SQL и MySQL, а также основ протокола HTTP.

Руководство в формате PDF доступно для скачивания только спонсорам, пожертвовавшим на развитие сайта 350 р. и более в течение месяца. Для пожертвования воспользуйтесь формой для перевода, которая расположена ниже. В процессе перевода с помощью Яндекс.Денег или банковской карты (выберите удобный способ, установив флажок) укажите свой E-mail, на который Вам будет отправлен PDF-файл в течение 3-х рабочих дней. В назначении платежа должно быть указано "пожервование на развитие сайта". Если указано другое назначение, то перевод будет Вам возвращен за вычетом комиссии платежной системы.

PDF-файл предоставляется КАК ЕСТЬ. Автор не несет никакой ответственности за прямые или косвенные проблемы, связанные с использованием файла. ВЫ ИСПОЛЬЗУЕТЕ ЕГО НА СВОЙ СТРАХ И РИСК.

Если перевели пожертвование в Сбербанк, то напишите о факте на почту unicross @ yandex.ru (удалите пробелы до и после @).

Характеристики PDF-файла:

Все названия программных продуктов являются зарегистрированными торговыми марками соответствующих фирм.

go pdf

Оглавление книги Учебник Go (Golang)

Глава 1. Первые шаги
Глава 2. Переменные и типы данных
Глава 3. Операторы и циклы
Глава 4. Числа
Глава 5. Массивы и слайсы
Глава 6. Словари и списки
Глава 7. Символы и строки
Глава 8. Регулярные выражения
Глава 9. Работа с датой и временем
Глава 10. Пользовательские функции
Глава 11. Объектно-ориентированное программирование
Глава 12. Пакеты и модули
Глава 13. Обработка ошибок
Глава 14. Чтение и запись файлов
Глава 15. Работа с файловой системой
Глава 16. Работа с MySQL
Глава 17. Работа с изображениями
Глава 18. Многопоточные приложения
Глава 19. Взаимодействие с Интернетом
Глава 20. Веб-сервер на Go

Глава 1. Первые шаги

1.1. Работа с командной строкой
1.2. Добавление пути в переменную PATH
1.3. Установка Go
1.4. Первая программа
1.5. Компиляция и запуск программы
1.6. Структура программы
1.7. Комментарии в программе
1.8. Вывод данных
1.9. Форматированный вывод данных
1.10. Ввод данных
1.11. Получение данных из командной строки
1.12. Предотвращение закрытия окна консоли
1.13. Преждевременное завершение выполнения программы

Глава 2. Переменные и типы данных

2.1. Объявление переменной
2.2. Инициализация переменной
2.3. Объявление сразу нескольких переменных
2.4. Сокращенный формат объявления переменных
2.5. Присваивание значения переменной
2.6. Именование переменных
2.7. Специальная переменная-заглушка
2.8. Типы данных в языке Go
2.9. Определение размера типа
2.10. Оператор type
2.11. Сохранение в переменной данных произвольного типа
2.12. Динамическое определение типа данных
2.13. Приведение типов
2.14. Указатели
2.15. Константы
2.16. Области видимости переменных
2.17. Динамическое выделение памяти

Глава 3. Операторы и циклы

3.1. Математические операторы
3.2. Побитовые операторы
3.3. Операторы присваивания
3.4. Оператор запятая
3.5. Операторы сравнения
3.6. Приоритет выполнения операторов
3.7. Оператор ветвления if
3.8. Оператор выбора switch
3.9. Цикл for
    3.9.1. Полный формат
    3.9.2. Сокращенный формат
    3.9.3. Бесконечное выполнение инструкций
    3.9.4. Перебор элементов массива, словаря и строки
3.10. Оператор continue: переход на следующую итерацию цикла
3.11. Оператор break: прерывание цикла
3.12. Оператор goto

Глава 4. Числа

4.1. Указание значений
4.2. Математические константы
4.3. Основные функции для работы с числами
4.4. Округление чисел
4.5. Тригонометрические функции
4.6. Преобразование строки в число
4.7. Преобразование числа в строку
4.8. Генерация псевдослучайных чисел
4.9. Бесконечность и значение NAN
4.10. Комплексные числа

Глава 5. Массивы и слайсы

5.1. Массивы
    5.1.1. Объявление и инициализация массива
    5.1.2. Определение количества элементов
    5.1.3. Получение и изменение значения элемента массива
    5.1.4. Перебор элементов массива
    5.1.5. Массивы указателей
    5.1.6. Указатели на массивы
    5.1.7. Создание копии массива
    5.1.8. Многомерные массивы
    5.1.9. Преобразование массива в строку
    5.1.10. Проверка наличия значения в массиве
5.2. Слайсы
    5.2.1. Объявление и инициализация слайса
    5.2.2. Определение количества элементов
    5.2.3. Получение и изменение значения элемента слайса
    5.2.4. Добавление элементов
    5.2.5. Перебор элементов слайса
    5.2.6. Слайсы из указателей
    5.2.7. Указатели на слайсы
    5.2.8. Создание копии слайса
    5.2.9. Многомерные слайсы
    5.2.10. Преобразование слайса в строку
    5.2.11. Поиск минимального и максимального значений
    5.2.12. Сортировка слайса
    5.2.13. Проверка наличия значения в слайсе
    5.2.14. Переворачивание слайса
5.3. Срезы. Преобразование массива в слайс
5.4. Байтовые слайсы
    5.4.1. Изменение регистра символов
    5.4.2. Удаление пробельных символов
    5.4.3. Преобразование байтового слайса в символьный
    5.4.4. Повтор фрагмента несколько раз
    5.4.5. Разбиение на фрагменты по разделителю
    5.4.6. Преобразование двумерного слайса в одномерный
    5.4.7. Замена фрагментов
    5.4.8. Поиск фрагментов
    5.4.9. Сравнение слайсов
    5.4.10. Нормализация слайса
    5.4.11. Определение количества символов
5.5. Байтовый буфер
    5.5.1. Получение содержимого буфера
    5.5.2. Добавление данных в буфер
    5.5.3. Получение размера и емкости буфера
    5.5.4. Изменение размера буфера
    5.5.5. Запись содержимого буфера в поток
5.6. Структура Reader
    5.6.1. Получение содержимого буфера
    5.6.2. Замена содержимого буфера
    5.6.3. Получение размера буфера
    5.6.4. Запись содержимого буфера в поток

Глава 6. Словари и списки

6.1. Словари
    6.1.1. Объявление и инициализация словаря
    6.1.2. Определение количества элементов
    6.1.3. Получение и изменение значения элемента словаря
    6.1.4. Добавление элементов
    6.1.5. Проверка существования ключа
    6.1.6. Удаление элемента из словаря
    6.1.7. Перебор элементов словаря
    6.1.8. Создание копии словаря
    6.1.9. Указатели на словари
    6.1.10. Преобразование словаря в строку
6.2. Двусвязные списки
    6.2.1. Создание списка
    6.2.2. Добавление элементов
    6.2.3. Получение указателей на элементы
    6.2.4. Определение количества элементов списка
    6.2.5. Удаление элементов из списка
    6.2.6. Перемещение элементов
    6.2.7. Перебор элементов списка

Глава 7. Символы и строки

7.1. Символы
    7.1.1. Объявление символа
    7.1.2. Специальные символы
    7.1.3. Изменение регистра символов
    7.1.4. Проверка типа содержимого символа
    7.1.5. Проверка валидности символа
    7.1.6. Преобразование символа в строку
7.2. Строки
    7.2.1. Объявление строки
    7.2.2. Преобразование строки в слайс и обратно
    7.2.3. Определение длины строки
    7.2.4. Доступ к элементам строки
    7.2.5. Перебор элементов строки
    7.2.6. Проверка валидности строки
    7.2.7. Конкатенация строк
    7.2.8. Форматирование строк
    7.2.9. Изменение регистра символов
    7.2.10. Удаление пробельных символов
    7.2.11. Повтор фрагмента несколько раз
    7.2.12. Разбиение на фрагменты по разделителю
    7.2.13. Преобразование строкового слайса в строку
    7.2.14. Замена фрагментов
    7.2.15. Поиск фрагментов
    7.2.16. Сравнение строк
    7.2.17. Нормализация строки
    7.2.18. Указатели на строки
    7.2.19. Получение фрагмента строки
7.3. Структура Builder
    7.3.1. Получение содержимого буфера
    7.3.2. Добавление данных в буфер
    7.3.3. Получение размера и емкости буфера
    7.3.4. Очистка буфера
7.4. Структура Reader
    7.4.1. Получение содержимого буфера
    7.4.2. Замена содержимого буфера
    7.4.3. Получение размера буфера
    7.4.4. Запись содержимого буфера в поток

Глава 8. Регулярные выражения

8.1. Создание шаблона регулярного выражения
8.2. Синтаксис регулярных выражений
    8.2.1. Экранирование специальных символов
    8.2.2. Модификаторы
    8.2.3. Метасимволы
    8.2.4. Стандартные классы
    8.2.5. Квантификаторы
    8.2.6. «Жадность» квантификаторов
    8.2.7. Группы
8.3. Проверка соответствия шаблону
8.4. Поиск полного соответствия шаблону
8.5. Поиск всех соответствий шаблону
8.6. Замена фрагментов
8.7. Разделение строки на фрагменты по шаблону

Глава 9. Работа с датой и временем

9.1. Структура Time
    9.1.1. Создание объекта
    9.1.2. Преобразование объекта в метку времени UNIX
    9.1.3. Преобразование объекта в строку
    9.1.4. Получение отдельных значений даты и времени
    9.1.5. Сравнение объектов
    9.1.6. Преобразование часовых поясов
9.2. Тип данных Duration
    9.2.1. Указание значения
    9.2.2. Получение значения
9.3. Изменение момента времени
9.4. «Засыпание» программы
9.5. Измерение времени выполнения фрагментов кода

Глава 10. Пользовательские функции

10.1. Создание функции и ее вызов
10.2. Способы возврата значения из функции
    10.2.1. Возврат одного значения
    10.2.2. Возврат нескольких значений
    10.2.3. Именованные возвращаемые значения
10.3. Способы передачи параметров в функцию
10.4. Передача массивов и слайсов в функцию
10.5. Передача данных произвольных типов
10.6. Переменное количество параметров
10.7. Сохранение в переменной ссылки на функцию
10.8. Передача в функцию ссылки на другую функцию
10.9. Анонимные функции
10.10. Замыкание
10.11. Рекурсия
10.12. Инструкция defer

Глава 11. Объектно-ориентированное программирование

11.1. Основные понятия
11.2. Объявление структуры
11.3. Создание экземпляра структуры
11.4. Доступ к полям структуры
11.5. Приватные и публичные поля
11.6. Имитация конструктора
11.7. Анонимные структуры
11.8. Пустые структуры
11.9. Вложенные структуры
11.10. Указатели на структуры и поля
11.11. Передача структур в функцию
11.12. Методы структур
11.13. Методы пользовательских типов
11.14. Композиция структур
11.15. Интерфейсы
    11.15.1. Создание интерфейса
    11.15.2. Композиция интерфейсов
    11.15.3. Пустые интерфейсы
11.16. Теги
11.17. Преобразование объекта в строку
11.18. Формат JSON: преобразование объекта в строку и обратно

Глава 12. Пакеты и модули

12.1. Инструкция package: объявление пакета
12.2. Инструкция import: импорт пакета
12.3. Разделение пакета на файлы
12.4. Создание модуля
12.5. Создание пользовательского пакета
12.6. Установка модулей
12.7. Обновление и удаление зависимостей
12.8. Функция init()

Глава 13. Обработка ошибок

13.1. Типы ошибок
13.2. Интерфейс error: описание ошибки
13.3. Функция panic(): генерация паники
13.4. Функция recover(): обработка паники
13.5. Способы поиска ошибок в программе
13.6. Отладка программы в редакторе Visual Studio Code
13.7. Тестирование
13.8. Протоколирование

Глава 14. Чтение и запись файлов

14.1. Открытие и закрытие файла
14.2. Указание пути к файлу
14.3. Запись в файл
14.4. Чтение из файла
14.5. Файлы произвольного доступа
14.6. Изменение длины содержимого файла
14.7. Создание временных файлов
14.8. Стандартные потоки ввода/вывода
14.9. Перенаправление ввода/вывода
14.10. Структура Writer: запись в файл
14.11. Структура Reader: чтение из файла
14.12. Структура ReadWriter: запись в файл и чтение из файла
14.13. Структура Scanner: построчное чтение из файла
14.14. Преобразование кодировок
    14.14.1. Русские кодировки
    14.14.2. Кодировка UTF-16
    14.14.3. Кодировка UTF-32

Глава 15. Работа с файловой системой

15.1. Пакет path/filepath: преобразование пути
15.2. Переименование и удаление файла
15.3. Права доступа к файлу и каталогу
15.4. Получение информации о файле и каталоге
15.5. Функции для работы с каталогами
15.6. Перебор объектов, расположенных в каталоге
15.7. Получение информации об операционной системе

Глава 16. Работа с MySQL

16.1. Установка драйвера
16.2. Регистрация драйвера и подключение к базе данных
16.3. Создание таблицы
16.4. Добавление записей
16.5. Обновление и удаление записей
16.6. Получение записей
16.7. Обработка значения NULL
16.8. Получение информации о таблице
16.9. Транзакции

Глава 17. Работа с изображениями

17.1. Получение информации об изображении
17.2. Загрузка изображения из файла
17.3. Сохранение изображения в файл
    17.3.1. Формат JPEG
    17.3.2. Формат PNG
    17.3.3. Формат GIF
17.4. Вспомогательные структуры и интерфейсы
    17.4.1. Структура Point: координаты точки
    17.4.2. Структура Rectangle: прямоугольная область
    17.4.3. Интерфейс Image: изображение
    17.4.4. Интерфейс Model: цветовая модель
    17.4.5. Интерфейс Color: цвет в формате RGBA
    17.4.6. Структуры, описывающие цвет в различных форматах
    17.4.7. Преобразование цвета из одного формата в другой
17.5. Создание изображения
    17.5.1. Формат RGBA
    17.5.2. Формат RGBA64
    17.5.3. Формат NRGBA
    17.5.4. Формат NRGBA64
    17.5.5. Формат CMYK
    17.5.6. Формат YCbCr
    17.5.7. Формат NYCbCrA
    17.5.8. Формат Gray
    17.5.9. Формат Gray16
    17.5.10. Формат Alpha
    17.5.11. Формат Alpha16
    17.5.12. Формат Paletted
    17.5.13. Формат Uniform
17.6. Пакет image/draw
    17.6.1. Интерфейс draw.Image: изменяемое изображение
    17.6.2. Интерфейс RGBA64Image: изменяемое изображение
    17.6.3. Интерфейс Drawer
    17.6.4. Интерфейс Quantizer
    17.6.5. Функция Draw()
    17.6.6. Функция DrawMask()

Глава 18. Многопоточные приложения

18.1. Запуск задачи в отдельном потоке
18.2. Ожидание завершения всех потоков
18.3. Синхронизация потоков с помощью мьютексов
18.4. Структура Map: потокобезопасный словарь
18.5. Структура Once: выполнение функции один раз
18.6. Каналы
    18.6.1. Небуфферизированные каналы
    18.6.2. Буфферизированные каналы
    18.6.3. Закрытие канала
    18.6.4. Цикл for...range
    18.6.5. Каналы только для чтения
    18.6.6. Каналы только для записи
    18.6.7. Возврат канала из функции
    18.6.8. Канал в качестве типа данных канала
    18.6.9. Пустая структура в качестве типа данных канала
    18.6.10. Оператор select
    18.6.11. Функция After()
    18.6.12. Функция Tick()
18.7. Прерывание работы потока

Глава 19. Взаимодействие с Интернетом

19.1. Структура URL: URL-адрес
19.2. Тип Values: строка запроса
19.3. Кодирование и декодирование строки запроса
19.4. Структура Userinfo: имя пользователя и пароль
19.5. Пакет path: разбор пути
19.6. Отправка запроса методом GET
19.7. Отправка запроса методом POST
19.8. Отправка файла методом POST
19.9. Отправка запроса методом HEAD
19.10. Структура Response: ответ сервера
19.11. Тип Header: словарь с HTTP-заголовками
19.12. Структура Cookie: cookies
19.13. Структура Client: HTTP-клиент
19.14. Структура Request: HTTP-запрос
19.15. Отправка запроса методом GET с произвольными настройками
19.16. Отправка запроса методом POST с произвольными настройками

Глава 20. Веб-сервер на Go

20.1. Запуск и остановка веб-сервера
20.2. Интерфейс ResponseWriter: ответ веб-сервера
20.3. Маршрутизация
20.4. Функция Handle()
20.5. Функция HandleFunc()
20.6. Перенаправление запроса
20.7. Отправка cookies
20.8. Отправка статических файлов
20.9. Получение данных формы
20.10. Замена специальных символов HTML-эквивалентами
20.11. Шаблоны