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