Программирование на языке Go

Практическое учебно-справочное пособие.

Саммерфильд Марк «Программирование на языке Go» ДМК Пресс, 2013 год, 580 стр., ISBN 978-5-94074-854-0; (2,21 мб. pdf)

Представленной книгой можно пользоваться как учебником по изучению и освоению (мультипарадигмального) языка Go, (и) или как справочником по основным командам, функциям и пакетам используемым для создания высокопроизводительных программ. Автор раскрывает все возможности языка Go (объединение логики, функционального, объектно-ориентированного и императивного стилей программирования), сравнивая идиомы программирования, и показывает его преимущества перед более старыми языками, уделяя особое внимание ключевым инновациям. Попутно, начиная с самых основ, Саммерфильд разъясняет все аспекты параллельного программирования на языке Go с применением каналов и без использования блокировок, а также показывает гибкость и необычность подхода к объектно-ориентированному программированию с применением механизма динамической типизации. Язык Go разработан в 2003 году и распространяется по лицензии GPLv2 (свободное программное обеспечение).

Оглавление книги

Содержание.

1. Обзор в пяти примерах 19
1.1. Начало 19
1.2. Правка, компиляция и запуск 22
1.3. Hello кто? 28
1.4. Большие цифры – двумерные срезы 32
1.5. Стек – пользовательские типы данных с методами 38
1.6. Американизация – файлы, отображения и замыкания 49
1.7. Из полярных координат в декартовы – параллельное программирование 65
1.8. Упражнение 74

2. Логические значения и числа 76
2.1. Начальные сведения 76
2.1.1. Константы и переменные 78
2.2. Логические значения и выражения 83
2.3. Числовые типы 84
2.3.1. Целочисленные типы 87
2.3.2. Вещественные типы 93
2.4. Пример: statistics 103
2.4.1. Реализация простых статистических функций 104
2.4.2. Реализация простого HTTP-сервера 106
2.5. Упражнения 111

3. Строки 113
3.1. Литералы, операторы и экранированные последовательности 115
3.2. Сравнение строк 117
3.3. Символы и строки 121
3.4. Индексирование и получение срезов строк 124
3.5. Форматирование строк с помощью пакета fmt 128
3.5.1. Форматирование логических значений 134
3.5.2. Форматирование целочисленных значений 134
3.5.3. Форматирование символов 136
3.5.4. Форматирование вещественных значений 137
3.5.5. Форматирование строк и срезов 139
3.5.6. Форматирование для отладки 141
3.6. Другие пакеты для работы со строками 145
3.6.1. Пакет strings 145
3.6.2. Пакет strconv 153
3.6.3. Пакет utf8 158
3.6.4. Пакет unicode 160
3.6.5. Пакет regexp 161
3.7. Пример: m3u2pls 173
3.8. Упражнения 180

4. Типы коллекций 183
4.1. Значения, указатели и ссылочные типы 184
4.2. Массивы и срезы 195
4.2.1. Индексирование срезов и извлечение срезов из срезов 201
4.2.2. Итерации по срезам 202
4.2.3. Изменение срезов 204
4.2.4. Сортировка и поиск по срезам 209
4.3. Отображения 214
4.3.1. Создание и заполнение отображений 216
4.3.2. Поиск в отображениях 219
4.3.3. Изменение отображений 220
4.3.4. Итерации по отображениям с упорядоченными ключами 221
4.3.5. Инвертирование отображений 222
4.4. Примеры 223
4.4.1. Пример: угадай разделитель 223
4.4.2. Пример: частота встречаемости слов 226
4.5. Упражнения 234

5. Процедурное программирование 238
5.1. Введение в инструкции 238
5.1.1. Преобразование типа 243
5.1.2. Приведение типов 245
5.2. Ветвление 247
5.2.1. Инструкция if 247
5.2.2. Инструкция switch 249
5.3. Инструкция цикла for 259
5.4. Инструкции организации взаимодействий и параллельного выполнения 263
5.4.1. Инструкция select 267
5.5. Инструкция defer и функции panic() и recover() 272
5.5.1. Функции panic() и recover() 273
5.6. Пользовательские функции 281
5.6.1. Аргументы функций 283
5.6.2. Функции init() и main() 287
5.6.3. Замыкания 289
5.6.4. Рекурсивные функции 291
5.6.5. Выбор функции во время выполнения 295
5.6.6. Обобщенные функции 298
5.6.7. Функции высшего порядка 305
5.7. Пример: сортировка с учетом отступов 312
5.8. Упражнения 319

6. Объектно-ориентированное программирование 322
6.1. Ключевые понятия 323
6.2. Пользовательские типы 326
6.2.1. Добавление методов 328
6.2.2. Типы с проверкой 334
6.3. Интерфейсы 336
6.3.1. Встраивание интерфейсов 343
6.4. Структуры 348
6.4.1. Структуры: агрегирование и встраивание 349
6.5. Примеры 357
6.5.1. Пример: FuzzyBool – пользовательский тип с единственным значением 357
6.5.2. Пример: фигуры – семейство пользовательских типов 365
6.5.3. Пример: упорядоченное отображение – обобщенный тип коллекций 381
6.6. Упражнения 392

7. Параллельное программирование 397
7.1. Ключевые понятия 399
7.2. Примеры 406
7.2.1. Пример: фильтр 407
7.2.2. Пример: параллельный поиск 412
7.2.3. Пример: поточно-ориентированное отображение 422
7.2.4. Пример: отчет о работе веб-сервера 430
7.2.5. Пример: поиск дубликатов 441
7.3. Упражнения 451

8. Обработка файлов 455
8.1. Файлы с пользовательскими данными 455
8.1.1. Обработка файлов в формате JSON 460
8.1.2. Обработка файлов в формате XML 467
8.1.3. Обработка простых текстовых файлов 475
8.1.4. Обработка файлов в двоичном формате Go 484
8.1.5. Обработка файлов в пользовательском двоичном формате 488
8.2. Архивные файлы 499
8.2.1. Создание zip-архивов 499
8.2.2. Создание тарболлов 502
8.2.3. Распаковывание zip-архивов 504
8.2.4. Распаковывание тарболлов 506
8.3. Упражнения 509

9. Пакеты 512
9.1. Пользовательские пакеты 512
9.1.1. Создание пользовательских пакетов 513
9.1.2. Импортирование пакетов 523
9.2. Сторонние пакеты 524
9.3. Краткий обзор команд компилятора Go 525
9.4. Краткий обзор стандартной библиотеки языка Go 526
9.4.1. Пакеты для работы с архивами и сжатыми файлами 527
9.4.2. Пакеты для работы с байтами и строками 527
9.4.3. Пакеты для работы с коллекциями 529
9.4.4. Пакеты для работы с файлами и ресурсами операционной системы 532
9.4.5. Пакеты для работы с графикой 534
9.4.6. Математические пакеты 534
9.4.7. Различные пакеты 535
9.4.8. Пакеты для работы с сетью 536
9.4.9. Пакет reflect 537
9.5. Упражнения 541

Приложения

A. Эпилог 545
B. Опасность патентов на программное обеспечение 548
C. Список технической литаратуры 553
Предметный указатель 556

СкачатьPDF+code

Похожая литература