Вы краем уха слышали о новом языке программирования Go, но не знаете, что он представляет собой на самом деле? Ответы на все ваши вопросы вы получите в этой книге. Она поможет вам познакомиться с языком Go поближе, узнать о его предназначении и преимуществах, и о том, как писать программы на этом языке (причем это будут программы не начинающего, но профессионального программиста — эффективные и идеоматичные).
Книга написана двумя профессионалами — как в области программирования, так и в области написания книг на программистские темы. Так что если вы хотите быть в курсе последних достижений в программировании — не сомневайтесь, взяв эту книгу, вы свернули на верный путь к профессиональному овладению языком Go.
Книга предназначена в первую очередь для программистов, уже уверенно владеющих каким-либо языком программирования.
Данная книга является важным и авторитетным источником знаний для тех, кто хочет изучить язык программирования Go. Она рассказывает о том, как писать ясные и идиоматические программы на языке Go для решения реальных практических задач. Книга не предполагает ни наличие некоторых предварительных знаний языка Go, ни опыта в работе с каким-то конкретным языком программирования, так что она будет доступна для вас, с каким бы языком вы раньше не работали — JavaScript, Ruby, Python, Java или C++.
- Первая глава представляет собой справочник основных концепций языка Go, показанных на примере программ файлового ввода-вывода и обработки текстов, простейшей графики, а также веб-клиентов и серверов.
- Первые главы охватывают структурные элементы программ на языке Go: синтаксис, управление потоком выполнения, типы данных и организация программ в виде пакетов, файлов и функций.
Приводимые примеры иллюстрируют множество пакетов стандартной библиотеки и показывают, как создавать собственные пакеты. В последующих главах механизм пакетов будет рассмотрен более подробно, и вы узнаете, как строить, тестировать и поддерживать проекты, используя инструментарий go.
- В главах, посвященных методам и интерфейсам, описывается нестандартный подход языка Go к объектно-ориентированному программированию, в котором методы могут быть объявлены для любого типа, а интерфейсы — неявно удовлетворены. В этих главах поясняются ключевые принципы инкапсуляции, композиции и заменимости с использованием реалистичных примеров.
- Две главы, посвященные параллелизму, представляют углубленный подход к этой важной теме. Первая глава охватывает основные механизмы go-подпрограмм и каналов, иллюстрирует стиль, известный как взаимодействие последовательных процессов, которым знаменит Go. Вторая охватывает более традиционные аспекты параллелизма с совместно используемыми переменными. Эти главы обеспечивают прочный фундамент для программистов, которые впервые встречаются с параллельными вычислениями.
- Две последние главы рассматривают низкоуровневые возможности языка Go. Одна из них посвящена искусству метапрограммирования с помощью рефлексии, а другая показывает, как использовать пакет unsafe для выхода за пределы системы типов в особых случаях, а также как использовать инструмент cgo для связи Go с библиотеками C.
В книге приведены сотни интересных и практичных примеров хорошо написанного кода на языке Go, которые охватывают весь язык, его наиболее важные пакеты, и имеют широкий спектр применения. В каждой главе содержатся упражнения для проверки вашего понимания и изучения возможных расширений и альтернатив.
Об авторах
Алан А. А. Донован является членом команды разработчиков языка Go в Google, в Нью-Йорке. Он получил ученую степень в области информатики в Кембридже и в МТИ, и занимается программированием с 1996 года. Начиная с 2005 года, он работает в Google над проектами в области инфраструктуры и был одним из разработчиков патентованной системы построения Blaze. Им создано множество библиотек и инструментов для статического анализа программ на языке Go, включая oracle, godoc -analysis, eg и gorename.
Брайан У. Керниган — профессор факультета информатики в Принстонском Университете. С 1969 по 2000 год он работал в исследовательском центре в Bell Labs, где занимался языками и инструментами для Unix. Он является соавтором ряда книг, включая такие, как Язык программирования C, 2-е издание (пер. с англ., ИД "Вильямс", 2006) и Практика программирования (пер. с англ., ИД "Вильямс", 2005).