Язык программирования Go

Язык программирования Go

Язык программирования Go
Автор: Донован Алан А. А., Керниган Брайан
Дата выхода: 2016
Издательство: Вильямс
Количество страниц: 436
Размер файла: 7.8 MB
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

 Содержание....8

Предисловие....13

Происхождение Go....14

Проект Go....15

Структура книги....17

Дополнительная информация....19

Благодарности....20

Ждем ваших отзывов!....21

Глава 1. Учебник....23

1.1. Hello, World....23

1.2. Аргументы командной строки....26

1.3. Поиск повторяющихся строк....31

1.4. Анимированные GIF-изображения....36

1.5. Выборка URL....39

1.6. Параллельная выборка URL....41

1.7. Веб-сервер....43

1.8. Некоторые мелочи....48

Глава 2. Структура программы....51

2.1. Имена....51

2.2. Объявления....52

2.3. Переменные....54

2.3.1. Краткое объявление переменной....55

2.3.2. Указатели....56

2.3.3. Функция new....59

2.3.4. Время жизни переменных....60

2.4. Присваивания....61

2.4.1. Присваивание кортежу....62

2.4.2. Присваиваемость....63

2.5. Объявления типов....64

2.6. Пакеты и файлы....66

2.6.1. Импорт....68

2.6.2. Инициализация пакетов....70

2.7. Область видимости....72

Глава 3. Фундаментальные типы данных....77

3.1. Целые числа....77

3.2. Числа с плавающей точкой....83

3.3. Комплексные числа....88

3.4. Булевы значения....90

3.5. Строки....92

3.5.1. Строковые литералы....93

3.5.2. Unicode....94

3.5.3. UTF-8....95

3.5.4. Строки и байтовые срезы....99

3.5.5. Преобразования между строками и числами....103

3.6. Константы....104

3.6.1. Генератор констант iota....105

3.6.2. Нетипизированные константы....107

Глава 4. Составные типы....111

4.1. Массивы....111

4.2. Срезы....114

4.2.1. Функция append....119

4.2.2. Работа со срезами «на месте»....122

4.3. Отображения....125

4.4. Структуры....132

4.4.1. Структурные литералы....135

4.4.2. Сравнение структур....136

4.4.3. Встраивание структур и анонимные поля....137

4.5. JSON....140

4.6. Текстовые и HTML-шаблоны....146

Глава 5. Функции....153

5.1. Объявления функций....153

5.2. Рекурсия....155

5.3. Множественные возвращаемые значения....159

5.4. Ошибки....162

5.4.1. Стратегии обработки ошибок....163

5.4.2. Конец файла (EOF)....166

5.5. Значения-функции....167

5.6. Анонимные функции....170

5.6.1. Предупреждение о захвате переменных итераций....176

5.7. Вариативные функции....178

5.8. Отложенные вызовы функций....180

5.9. Аварийная ситуация....185

5.10. Восстановление....188

Глава 6. Методы....193

6.1. Объявления методов....193

6.2. Методы с указателем в роли получателя....196

6.2.1. Значение nil является корректным получателем....198

6.3. Создание типов путем встраивания структур....199

6.4. Значения-методы и выражения-методы....202

6.5. Пример: тип битового вектора....204

6.6. Инкапсуляция....207

Глава 7. Интерфейсы....211

7.1. Интерфейсы как контракты....211

7.2. Типы интерфейсов....214

7.3. Соответствие интерфейсу....215

7.4. Анализ флагов с помощью flag.Value....219

7.5. Значения интерфейсов....222

7.5.1. Осторожно: интерфейс, содержащий нулевой указатель, не является нулевым....226

7.6. Сортировка с помощью sort.Interface....227

7.7. Интерфейс http.Handler....233

7.8. Интерфейс error....238

7.9. Пример: вычислитель выражения....240

7.10. Декларации типов....248

7.11. Распознавание ошибок с помощью деклараций типов....250

7.12. Запрос поведения с помощью деклараций типов....252

7.13. Выбор типа....254

7.14. Пример: XML-декодирование на основе лексем....257

7.15. Несколько советов....260

Глава 8. Go-подпрограммы и каналы....261

8.1. Go-подпрограммы....261

8.2. Пример: параллельный сервер часов....263

8.3. Пример: параллельный эхо-сервер....267

8.4. Каналы....269

8.4.1. Небуферизованные каналы....271

8.4.2. Конвейеры....272

8.4.3. Однонаправленные каналы....275

8.4.4. Буферизованные каналы....277

8.5. Параллельные циклы....280

8.6. Пример: параллельный веб-сканер....285

8.7. Мультиплексирование с помощью select....290

8.8. Пример: параллельный обход каталога....294

8.9. Отмена....298

8.10. Пример: чат-сервер....301

Глава 9. Параллельность и совместно используемые переменные....305

9.1. Состояния гонки....305

9.2. Взаимные исключения: sync.Mutex....311

9.3. Мьютексы чтения/записи: sync.RWMutex....315

9.4. Синхронизация памяти....316

9.5. Отложенная инициализация: sync.Once....318

9.6. Детектор гонки....321

9.7. Пример: параллельный неблокирующий кеш....321

9.8. Go-подпрограммы и потоки....330

9.8.1. Растущие стеки....330

9.8.2. Планирование go-подпрограмм....331

9.8.3. GOMAXPROCS....331

9.8.4. Go-подпрограммы не имеют идентификации....332

Глава 10. Пакеты и инструменты Go....335

10.1. Введение....335

10.2. Пути импорта....336

10.3. Объявление пакета....337

10.4. Объявления импорта....338

10.5. Пустой импорт....339

10.6. Пакеты и именование....341

10.7. Инструментарий Go....343

10.7.1. Организация рабочего пространства....344

10.7.2. Загрузка пакетов....345

10.7.3. Построение пакетов....346

10.7.4. Документирование пакетов....349

10.7.5. Внутренние пакеты....351

10.7.6. Запрашиваемые пакеты....352

Глава 11. Тестирование....355

11.1. Инструмент go test....356

11.2. Тестовые функции....356

11.2.1. Рандомизированное тестирование....361

11.2.2. Тестирование команд....363

11.2.3. Тестирование белого ящика....365

11.2.4. Внешние тестовые пакеты....369

11.2.5. Написание эффективных тестов....371

11.2.6. Избегайте хрупких тестов....373

11.3. Охват....374

11.4. Функции производительности....377

11.5. Профилирование....380

11.6. Функции-примеры....383

Глава 12. Рефлексия....385

12.1. Почему рефлексия?....385

12.2. reflect.Туре и reflect.Value....386

12.3. Рекурсивный вывод значения....389

12.4. Пример: кодирование S-выражений....395

12.5. Установка переменных с помощью reflect.Value....398

12.6. Пример: декодирование S-выражений....401

12.7. Доступ к дескрипторам полей структур....405

12.8. Вывод методов типа....409

12.9. Предостережение....410

Глава 13. Низкоуровневое программирование....411

13.1. unsafe.Sizeof, Alignof и Offsetof....412

13.2. unsafe.Pointer....414

13.3. Пример: глубокое равенство....417

13.4. Вызов кода С с помощью cgo....420

13.5. Еще одно предостережение....425

Предметный указатель....427

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

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


Похожее:

Список отзывов:

Нет отзывов к книге.