Go, также известный как Golang, представляет собой компилируемый язык программирования со статической типизацией, разработанный в Google Робертом Гриземером, Робом Пайком и Кеном Томпсоном. Go синтаксически очень похож на C, но с безопасностью памяти, сборкой мусора, структурной типизацией и параллелизмом в стиле CSP.
- Введение в Golang
- Возможности Golang
- Двоичные файлы (скомпилированные)
- Статически типизированный
- Является ли Golang объектно-ориентированным языком?
- Автоматический вывод типа
- Concurrent Support
- Кросс-платформенный
- Управление пакетами
- Поддержка тестирования
- Почему? Используйте Go
- Веб-разработка и интерфейс.
- Разработка пользовательского интерфейса для настольных ПК.
- Разработка ядра ОС
- Управление сервером центра обработки данных
- Заключение
Введение в Golang
Golang — это процедурный язык программирования со статической типизацией, имеющий синтаксис, аналогичный языку программирования C. Часто его называют языком программирования Go . Он предоставляет мощную стандартную библиотеку, сборку мусора и возможность динамической типизации.
Возможности Golang
Go — это новый, язык программирования общего назначения со следующими функциями.
- Скомпилированный (двоичные файлы)
- Статически типизированный
- Object-Oriented Go
- Автоматический вывод типа
- Concurrent
- Кросс-платформенный (работает в Linux /mac/windows. В настоящее время поддерживается экспериментальная мобильная версия. Вы можете написать программу OpenGL, которая может работать на iOS/Android изначально на Go1.5).
- Управление пакетами
- Поддержка тестирования
Двоичные файлы (скомпилированные)
Golang генерирует двоичные файлы для ваших приложений со всеми встроенными зависимостями. Эти двоичные файлы избавляют вас от необходимости устанавливать среды выполнения, необходимые для работы вашего приложения.
Это очень упрощает задачу развертывания приложений и предоставления необходимых обновлений для тысяч установок. Благодаря поддержке нескольких архитектур ОС и процессоров, это большая победа для языка.
Статически типизированный
Golang — это статически типизированный язык, и компилятор усердно работает над тем, чтобы код не просто компилировался правильно. Тем не менее, позаботились о других преобразованиях типов и совместимости. Вы можете избежать этих проблем, с которыми сталкиваются языки с динамической типизацией, где вы обнаруживаете проблемы только при выполнении кода.
Является ли Golang объектно-ориентированным языком?
Да и нет. Хотя в Go есть типы и методы, позволяющие использовать объектно-ориентированный стиль программирования, никакого типа иерархии не существует. Концепция «интерфейса» в Go обеспечивает другой подход, который, по нашему мнению, прост в использовании и в некотором смысле более общий.
Есть также способы встраивать типы в другие типы, чтобы обеспечить нечто аналогичное, но не идентичное созданию подклассов. Более того, методы в Golang более общие, чем в C ++ или Java: они могут быть определены для любых данных, даже для встроенных типов, таких как простые, «распакованные» целые числа. Они не ограничиваются структурами (классами).
Кроме того, отсутствие иерархии типов делает «объекты» в Go более легкими, чем в таких языках, как C ++ или Java..
Автоматический вывод типа
При объявлении переменная без указания явного типа (с использованием синтаксиса: = или синтаксиса выражения var =). Тип переменной определяется значением справа. Когда вводится правая часть объявления, новая переменная имеет тот же тип.
См. Следующий код.
var a intb: = i //a - это целое число
Concurrent Support
Это одна из областей, в которой язык проявляет себя лучше всего благодаря своей первой -классовая поддержка параллелизма в самом языке.
Если у вас есть параллелизм программирования на других языках, вы понимаете, что это довольно сложно сделать. Примитивы Golang Concurrency через горутины и каналы упрощают параллельное программирование.
Его способность использовать преимущества архитектуры многоядерных процессоров и эффективную память является одной из причин того, что код Go сегодня выполняет некоторые из наиболее часто используемых приложений, которые можно масштабировать.
Кросс-платформенный
Golang обеспечивает отличную поддержку для создания двоичных файлов для различных платформ без необходимости установки Go на целевом компьютере. Это очень удобно для пакетов тестирования, которые используют теги сборки или где целевая платформа не подходит для разработки.
Управление пакетами
Модули Go — это способ работы с зависимостями в Golang. Первоначально это эксперимент, предполагается, что он войдет в игровое поле в 1.13 в качестве нового значения по умолчанию для управления пакетами в Go.
Модуль — это набор пакетов Go, хранящихся в дереве файлов с тегом go.mod в корне. Файл go.mod определяет путь к модулю модуля, который также является путем импорта, используемый для корневого каталога, и его требования к зависимости , которые являются другими модулями, необходимыми для успешной сборки. Каждое требование зависимости записывается как путь к модулю и конкретная семантическая версия.
Поддержка тестирования
Тестирование пакета Go вместе с команда «go test» автоматизирует выполнение любой функции формы и автоматизирует тестирование пакетов Go.
Язык Golang имеет встроенную поддержку тестирования и автоматический сборщик мусора, которые помогают создавать безошибочное и безошибочное приложение для клиента.
Почему? Используйте Go
Golang — это язык программирования общего назначения, который означает, что вы можете делать практически все, что угодно. Поскольку это язык программирования общего назначения, в golang легче описать то, что нельзя делать.
Веб-разработка и интерфейс.
Golang можно скомпилировать в JavaScript и веб-сборку, но я бы еще не назвал это зрелым.
Разработка пользовательского интерфейса для настольных ПК.
Это можно сделать, но библиотеки для этого в Golang еще не настолько развиты. Рок-звездами в этой области по-прежнему остаются C ++/Qt и Java с JavaFX.
Разработка ядра ОС
В C есть так называемая автономная среда, которая ничего не ожидает, на самом деле ничего на месте. Прошивки и ядра ОС обычно пишутся на C с использованием автономной среды.
Кроме того, Golang легко интегрировать с C и всеми языками, которые упрощают интеграцию с C, например Python. Многие языки программирования, такие как Java и JavaScript, сильно оторваны от собственного ABI (Application Binding Interface). Для таких языков и взаимодействие с Golang затруднено.
Для языков программирования, которые подключены к собственному ABI, взаимодействие с Golang не требует усилий.
Управление сервером центра обработки данных
Производители оборудования добавляют к процессорам все больше и больше ядер, чтобы повысить производительность серверов. Все центры обработки данных работают на этих процессорах, и в ближайшие годы следует ожидать увеличения количества ядер.
Более того, современные приложения используют несколько микросервисов для поддержки соединений с базой данных, очередей сообщений и обслуживания кешей. Итак, программное обеспечение, которое мы разрабатываем, и языки программирования должны легко поддерживать параллелизм, и они должны масштабироваться с увеличением числа ядер.
Горутины имеют растущие сегментированные стеки. Это означает, что они будут использовать больше памяти только при необходимости. Горутины имеют более быстрое время запуска, чем потоки.
Горутины имеют встроенные примитивы для безопасного обмена данными между собой (каналами). Горутины позволяют избежать блокировки мьютексов при совместном использовании структур данных.
Кроме того, горутины и потоки ОС не имеют сопоставления 1: 1. Одна горутина может работать в нескольких потоках. Горутины объединены в небольшое количество потоков ОС.
Заключение
Golang — это многоцелевой язык, и его можно использовать в разных сферах. Но есть несколько вариантов использования, которые выделяют Go:
- Параллельные системы: Go имеет встроенную поддержку парадигм параллелизма. Следовательно, вы можете использовать его для создания приложений в реальном времени, не беспокоясь о стабильности и проблемах с производительностью.
- Сеть: опять же, со встроенной поддержкой параллелизма и мощной стандартной библиотекой, реализация систем, которые нуждаются в высокопроизводительная работа в сети — это очень просто.
- Системные приложения: стабильная среда выполнения, мощная стандартная библиотека и простая кросс-компиляция в один двоичный файл, что еще вам нужно от языка программирования для построения системы apps?
Наконец, статья «Введение в Golang» окончена.