Go | Введение в язык

Последнее обновление: 10.08.2022

Go представляет компилируемый статически типизированный язык программирования от компании Google. Язык Go предназначен для создания различного рода приложений, но прежде всего это веб-сервисы и клиент-серверные приложения. Хотя также язык обладает возможностями по работе с графикой, низкоуровневыми возможностями и т.д.

Работа над языком Go началась в 2007 в недрах компании Google. Одним из авторов является Кен Томпсон, который, к слову, является и одним из авторов языка Си (наряду с Денисом Ритчи). 10 ноября 2009 года язык был анонсирован, а в марте 2012 года вышла версия 1.0. При этом язык продолжает развиваться. Текущей версией на момент написания данной статьи является версия 1.19, которая вышла в августе 2022 года.

Язык Go развивается как open source, то есть представляет поект с открытым исходным кодом, и все его коды и компилятор можно найти и использовать бесплатно. Официальный сайт проекта — https://go.

dev/, где можно много полезной информации о языке.

Go является кроссплатформенным, он позволяет создавать программы под различные операционные системы — Windows, Mac OS, Linux, FreeBSD. Код обладает переносимостью: программы, написанные для одной из этих операционных систем, могут быть легко с перекомпиляцией перенесены на другую ОС.

Основные особенности языка Go:

  • компилируемый — компилятор транслирует программу на Go в машинный код, понятный для определенной платформы

  • статически типизированный

  • присутствует сборщик мусора, который автоматически очищает память

  • поддержка работы с сетевыми протоколами

  • поддержка многопоточности и параллельного программирования

В настоящее время Go находит широкое применение в различных сферах. В частности, среди известных проектов, которые применяют Go, можно найти следующие: Google, Dropbox, Netflix, Kubernetes, Docker, Twitch, Uber, CloudFlare и ряд других.

Что нужно для работы с Go? Прежде всего необходим текстовый редактор для набора кода и компилятор для преобразования кода в исполняемый файл. Также можно использовать специальные интегрированные среды разработки (IDE), которые поддерживают Go, например, GoLand от компании JetBrains. Существуют плагины для Go для других IDE, в частности, IntelliJ IDEA и Netbeans.

Установка компилятора

Пакет для установки компилятора можно загрузить с официального сайта https://go.dev/dl/.

По этому адресу пакеты установщиков для различных операционных систем. Так, при загрузки и запуске установщика для Windows открывается следующее окно:

После принятия лицензионного соглашения отобразится окно для выбора места установки:

На Windows, например, по умолчанию используется путь «C:\Program Files\Go\». Оставим путь по умолчанию и перейдем к следующему окну, на котором нажмем на кнопку Install:

После успешной установки в папке установки будут установлены все файлы, необходимые для работы с Go.

В частности, в подкаталоге bin можно найти файл go (go.exe на Windows), который выполняет роль компилятора:

После установки мы можем проверить версию языка, запустив следующую команду в консоли/командной строке:

go version

НазадСодержаниеВперед

мнения и перспектива – База знаний Timeweb Community

Go – это язык программирования, который был разработан корпорацией Google. Часто его еще называют «Golang» – сокращение от «Google language». Это компилируемый и многопоточный язык, релиз которого состоялся в ноябре 2009 года, а самый свежий выпуск 1.6 датируется февралем 2016 года. Одной из ключевых фигур, которые принимали участие в создании Go, является Роб Пайк, известный разработчик языков программирования, а также операционных систем, в данный момент работающий в Google. Выступая на одной из конференций, он отметил, что язык Go – это попытка перенять лучшие стороны таких языков, как C++ и Java.

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

Применение Golang

Язык Go разрабатывался как язык для создания различных высокоэффективных программ, однако большинство программистов сходятся во мнении, что лучше всего он подходит для создания веб-приложений (в качестве back-end). При этом Go дает возможности писать и другие проекты, к примеру, Docker, InfluxDB и Kubernetes. По сути, применение языка Go ограничивается тремя основными направлениями: сетевое программное обеспечение, консольные утилиты и бэкенд.

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

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Плюсы языка Go

У языка Go есть несколько положительных черт, выделяемых программистами, которые на нем пишут.

Во-первых, это его простота. Язык Go разрабатывался в качестве замены C: его высокая производительность почти сопоставима с языком Си, но более простой синтаксис дает возможность разрабатывать приложения гораздо быстрее (к примеру, как на Python). При этом многие разработчики изучают этот язык после Python или PHP либо используют два языка в связке (Python/Go и PHP/Go). Упрощенный синтаксис облегчает не только написание своего собственного кода, но и чтение кода, написанного другими программистами, что особенно важно в командной работе. Эта особенность Go, в свою очередь, ведет к другому важному факту: быстрое освоение Go позволяет перевести внимание с изучения самого языка на изучение программирования в целом.

Программисты постоянно сравнивают язык Go с другими языками: в его пользу свидетельствует тот факт, что, к примеру, в PHP существует 67 ключевых слов, а в Go их всего лишь 25.

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

Поэтому некоторые компании (к примеру, CrowdStrike) сознательно переходят с других языков программирования на Go для того, чтобы в дальнейшем более легко расширять пул своих разработчиков.

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

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

Нельзя не отметить и четкую направленность языка: в отличие от PHP, на котором пишут большие проекты, Go больше предназначен для некрупных сервисов, которые необходимо быстро внедрить и которые должны отличаться чрезвычайной надежностью (так называемое robust software).

Развертка Go-приложения также выглядит намного проще, чем развертка приложения, написанного на PHP. Программируя на Go, вы можете создать артефакты для всех операционных систем или архитектур процессора, вам не нужно будет устанавливать Go на используемые вами сервера.

Синтаксис Go может быть непривычен тем, кто до этого программировал на PHP или Python. Если рассматривать код Go в сравнении с PHP, то Go не имеет объектов или классов, зато в нем есть структура, а точнее тип, который содержит именованные поля:


type Circle struct {
 x, y, r float64
}

Еще одной причиной, по которой Go завоевывает все большую популярность, является наличие go fmt – инструмента, который помогает стандартизировать код. А использование go vet поможет вам найти возможные проблемы в коде. Иными словами, авторы языка Go попытались максимально упросить задачу разработки приложений на этом языке, особенно для новичков.

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

Кстати, такой прецедент уже был: учитель научил несколько 11-летних школьников писать и разбираться в коде на таком уровне, что они смогли написать генератор фракталов Мандельброта. А главное, для этого ему понадобилось всего 12-13 часов!

Стать профессиональным Go-разработчиком можно всего за 12 месяцев! Хотите узнать как? Заходите на сайт GeekBrains по этой ссылке.

Минусы языка Go

В качестве негативной стороны Go часто называют его малую на данный момент распространенность – действительно, есть куда более распространенные языки программирования, которые используются для выполнения большинства задач. Значит ли это, что изучать Go не стоит? Совсем нет. Существует множество корпораций, которые используют язык Go в своих разработках. В первую очередь это, конечно же, Google Inc., а также Basecamp, BBC Worldwide, Canonical, DigitalOcean, Dropbox, eBay, Yahoo и многие другие компании по всему миру. Поэтому перспективы у этого языка программирования точно есть. Безусловно, программисты Go могут быть менее востребованы, чем, к примеру, PHP-разработчики, однако и конкуренция ниже, а значит, выше шанс найти интересную и хорошо оплачиваемую работу.

Те, кто пытаются предугадать перспективы языка Go, также говорят о другом минусе, который фактически является противоположностью предыдущего пункта: из-за легкости языка, а значит, и низкого порога вхождения, количество людей, программирующих на Go, будет расти в геометрической прогрессии, при этом качество кода и сами проекты будут оставлять желать лучшего. Похожая ситуация в начале XXI века случилась с PHP, когда на этом языке стало писать множество начинающих программистов, не очень волнующихся за работоспособность своего кода (и готовых получать небольшую плату за свой труд). Главное отличие PHP от Go на данный момент заключается в том, что PHP в итоге стал полноценным языком с богатой инфраструктурой и множество фреймворков, без знания которых вы едва ли найдете хорошую работу. Go же позиционируется как простой язык, поэтому перспективы его развития не очень определены.

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

Вывод

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

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

  • Посмотреть пример из практики

  • Посмотреть пример из практики

  • Посмотреть пример из практики

  • Посмотреть пример из практики

// Вы можете редактировать этот код! // Щелкните здесь и начните печатать. основной пакет импортировать «фмт» основная функция () { fmt.Println(«Привет, 世界») }

 Привет, 世界 

Привет, мир! Игра жизни Конвея Замыкание Фибоначчи Целые числа Пеано Параллельное число pi Параллельное вычисление простых чисел SievePeg Solitaire Сравнение деревьев

  • Облачные и сетевые службы

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

  • Интерфейсы командной строки

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

  • Веб-разработка

    Благодаря повышенной производительности памяти и поддержке нескольких IDE Go поддерживает быстрые и масштабируемые веб-приложения.

  • DevOps и надежность сайта

    Благодаря быстрой сборке, компактному синтаксису, автоматическому форматированию и генератору документов Go поддерживает как DevOps, так и SRE.

  • Другие варианты использования arrow_forward

  • Учебные поездки с гидом

    Пошаговые руководства, чтобы намочить ноги

  • Онлайн обучение

    Просматривайте ресурсы и учитесь в своем собственном темпе

  • Избранные книги

    Прочтите структурированные главы и теории

  • Облако Самостоятельные занятия

    Перейти к развертыванию приложений Go на GCP

  • Ардан Лабс

    Предлагает индивидуальные обучающие занятия на месте.

  • Путеводители по сусликам

    Индивидуальные занятия Очные, дистанционные и онлайн-обучения. Обучение для разработчиков от разработчиков.

  • Босс Соус Креатив

    Индивидуальные или трековые тренировки по го для команд.

  • Шиджу Варгезе

    Обучение Go на месте и консультации по архитектуре распределенных систем в Индии.

Начало работы — язык программирования Go

  1. Язык программирования Go
  2. Начать

Установите последнюю версию Go. Инструкции по загрузке и установке компиляторы, инструменты и библиотеки Go, просмотреть документацию по установке.

Скачать

Скачать пакеты для Windows 64-бит, макОС, Линукс и более.

  • Развертывание приложений Go на бессерверных платформах Google Cloud

  • Используйте код Go для работы с облачными источниками данных Google

  • Начало работы с Go on App Engine

  • HTTP-функции Google Cloud в Go

  • Начало работы

    В этом руководстве вы познакомитесь с кратким введением в программирование на Go. Попутно вы установите Go, напишите простой код «Hello, world», используйте команду go для запуска вашего кода, используйте инструмент обнаружения пакетов Go и вызовите функции внешнего модуля.

    Руководство
  • Создание модуля

    Это первая часть руководства, знакомящего с некоторыми основными функциями языка Go. В этом уроке вы создадите два модуля. Первая — это библиотека, которая предназначена для импорта другими библиотеками или приложениями. Второе — это вызывающее приложение, которое будет использовать первое.

    Руководство
  • Разработка веб-сервиса

    В этом руководстве представлены основы написания API веб-службы RESTful с помощью Go и Gin Web Framework. В этом руководстве вы создадите сервер RESTful API с двумя конечными точками.

    Интерактивный учебник
  • Доступ к реляционной базе данных

    В этом руководстве представлены основы доступа к реляционной базе данных с помощью Go и пакета database/sql в его стандартной библиотеке. В этом руководстве вы создадите базу данных, а затем напишите код для доступа к базе данных.

    Руководство
  • Язык программирования Go

    Алан А. А. Донован, Брайан В. Керниган

  • Программирование на Go

    Натан Янгман, Роджер Пеппе

    Мэннинг. com

  • Go Programming Blueprints

    Это официальный репозиторий исходного кода книги.

    Посмотреть на GitHub

  • Знакомство с Go

    Калеб Докси

    Посмотреть на O’Reilly.com

  • Параллелизм в Go

    Кэтрин Кокс-Будей

    Посмотреть на O’Reilly.com

  • Ардан Лабс

    Предлагает индивидуальные обучающие занятия на месте.

  • Путеводители по сусликам

    Индивидуальные занятия Очные, дистанционные и онлайн-обучения. Обучение для разработчиков от разработчиков.

  • Босс Соус Креатив

    Индивидуальные или трековые тренировки по го для команд.