Sckontakt.ru

Уроки онлайн
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Google go язык программирования

Golang: основы для начинающих

Golang: основы для начинающих

  • Переводы , 24 августа 2017 в 21:49
  • Александр Наливайко

Golang, или Go — язык программирования, начало которого было положено в 2007 году сотрудниками компании Google: Робертом Гризмером, Робом Пайком и Кеном Томпсоном.

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

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

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

LATOKEN, Москва, от 4000 до 6000 $

Размер программ на Go начинается с 3 строк и может достигать нескольких миллионов, записанных в один или несколько файлов с расширением .go . Современные текстовые редакторы, например, vim, поддерживают его синтаксис.

Настройка окружения

Для начала скачаем 64-битную версию Go c официального сайта. В зависимости от используемой операционной системы выполняем следующие действия.

UNIX / Linux / MacOS X / FreeBSD

Извлекаем скачанный архив в папку /usr/local/go . Например:

Добавляем папку /usr/local/go/bin в переменную окружения PATH :

Windows

Используем MSI файл и следуем инструкциям. По умолчанию инструменты Go размещаются в папке С:Go . При установке папка C :Gobin автоматически добавится в системную переменную PATH .

Чтобы изменения вступили в силу, перезапустим все открытые окна эмуляторов терминала.

Проверяем корректность установки, создав и выполнив файл C:ProjectsGotest.go :

Выполним этот код и получим следующий результат:

Синтаксис

Пакеты

Каждая программа на языке Go состоит из пакетов (packages). Пакет main — главный, с него начинается выполнение программы. В приведённом выше примере импортируется пакет fmt .

Импорт

Импорт пакетов можно описать двумя способами.

Функции

Общая форма определения функции выглядит следующим образом:

Количество и тип входных аргументов может быть любым. Для примера опишем функцию add с двумя входными параметрами формата int :

Выполним этот код и получим следующий результат:

Переменные

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

С помощью оператора var определяем перечень переменных, причём тип данных указываем в конце выражения.

Объявление возможно как на уровне пакета, так и на уровне функции. Рассмотрим пример:

Выполним этот код и получим следующий результат:

Оператор цикла

В языке Go один оператор цикла — это for , который повторяет список инструкций заданное количество раз. Цикл состоит из трёх выражений:

  1. Инициализация. Выполняется перед первой итерацией.
  2. Условие. Вычисляется перед каждой итерацией.
  3. Инкремент. Выполняется после каждой итерации.

Общая форма цикла выглядит так:

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

Цикл останавливает свою работу, когда условие принимает значение false .

Примечание В отличие от таких языков, как C, Java и JavaScript, перечисленные выражения цикла не выделяются скобками. В данном случае обязательны лишь фигурные скобки, обрамляющие тело цикла.

Рассмотрим пример программы:

Выполним этот код и получим следующий результат:

Условный оператор

Форма определения условного оператора в Go выглядит следующим образом:

Если выражение в поле условия истинно, код, размещённый между фигурными скобками, выполнится.

Условие описывается значением, переменной или выражением. Например:

  • true — выполняется всегда;
  • a — выполняется, когда a меньше 10 ;
  • (a — выполняется, когда a меньше b или a меньше c ;
  • (a — выполняется, когда a меньше b и a меньше c .

Рассмотрим пример программы:

Выполним этот код и получим следующий результат:

Массивы

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

Чтобы объявить массив, необходимо указать тип и требуемое количество элементов следующим образом:

Например, чтобы создать массив balance , состоящий из десяти элементов типа float32 , используем следующее выражение:

Если значения элементов известны, для определения массива допустимо использовать следующую конструкцию:

Длина массива не изменяется, потому что является частью типа данных. Это кажется ограниченным решением, но не волнуйтесь: в Go реализована комфортная работа с массивами.

Рассмотрим пример программы:

Выполним этот код и получим следующий результат:

Срезы

Срезы (Slices) в Go — абстракция над массивами. Хотя встроенных способов увеличить размер массива динамически или сделать вложенный массив в Go нет, срезы убирают это ограничение. Они предоставляют полезные функции и широко используются программистами.

Объявить срез можно как массив, но без указания размера или с помощью функции make :

Размер массива фиксирован, а у среза изменяемый. По сути, срез — более общий вид массива.

Тип []T — срез с элементами типа T .

a[0:5] — срез 5 элементов массива a .

Рассмотрим пример программы:

Выполним этот код и получим следующий результат:

Структуры

Структура (structure) — пользовательский тип данных, который кроме прочего комбинирует элементы разных типов. Чтобы объявить структуру, используем выражения type и struct .

Struct определяет тип данных, которому соответствует два и более элементов.

Type связывает заданное имя с описанием структуры.

Форма описания выглядит следующим образом:

Как только структура типа определена, он может использоваться при объявлении новых переменных:

Чтобы получить доступ к элементам структуры, используем оператор доступа к элементу. Рассмотрим на примере:

Выполним этот код и получим следующий результат:

Почему именно Golang?

Концепция языка Golang разработана на основе опыта решения повседневных задач и не преследует цель сделать прорыв в программировании. Кроме того, Go не реализует ряд функций, которые делают другие языки (C++, Java и Python) настолько мощными. Но есть три причины, чтобы задуматься об использовании этого языка.

Читабельность

Как только привык к синтаксису Go, прочесть чужой код — тривиальная задача.

У каждого человека собственный «правильный» способ делать вещи, поэтому Go навязывает свой стиль программирования. В результате вопросы вроде использования или неиспользования фигурных скобок отпадают, и остаётся только писать код по заданным правилам.

Скорость

За короткий промежуток времени можно написать быструю программу.

Производительность работы пакета на Go, возможно, будет меньше, чем при использовании С, зато скорость компиляции для больших программ будет выше. Для большинства проектов — приемлемый компромисс, причём при необходимости достаточно просто переписать код на языке Go.

Меньше ошибок

Большинство ошибок возникают в непроверенном или сложном коде.

Go предоставляет удобные средства для тестирования. Кроме того, строгая типизация устраняет ошибки вроде случайного сравнения количества яблок с количеством груш, которые определяются ещё на этапе компиляции.

Заключение

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

Что такое Go? Go Playground, пакеты, функции и скобки в Golang

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

Содержание статьи

Не все языки программирования задействуют данный подход. Python, Ruby и некоторые другие популярные языки используют интерпретатор для перевода одного оператора за раз по ходу выполнения программы. Это значит, что в непротестированных частях программы могут остаться баги.

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

С другой стороны, интерпретаторы делают процесс написания кода быстрым и интерактивным, язык становится динамичным, ничем не обремененным. У компилированных языков сложилась репутация более статичных, неподвижных роботов, которых программистам приходиться усмирять. Сами компиляторы зачастую высмеивают за их медлительность. Но должно ли все быть именно так?

Мы хотели добиться безопасности и производительности статически компилируемых языков вроде С++ или Java, а также легкости и свободы интерпретируемых языков с динамической типизацией наподобие Python.

— Роб Пайк, Geek of the Week (Источник)

Go создан с большим вниманием к опыту написания программного обеспечения.
Большие программы компилируются за считанные секунды одной командой. Язык опускает аспекты, что приводят к неоднозначности, и пытается добиться предсказуемого и понятного кода. Go также предоставляет легкую альтернативу жесткой конструкции, навязанной
классическими языками наподобие Java.

Java опускает многие, редко используемые, зачастую сложные и запутанные особенности С++. Однако нам кажется, что это скорее минус, нежели плюс.

— Джеймс Гослинг, Java: an Overview

Каждый новый язык программирования переосмысливает идеи прошлого. Go, используя эффективность памяти, делает это с легкостью, избегая ошибок предшественников. Язык использует преимущество каждого ядра многоядерного процессора. Некоторые предприятия смогли добиться успеха после перехода на Go. К примеру, Iron.io заменил 30 серверов с Ruby на 2 сервера с Go (Источник). Bitly также добился существенного роста производительности после переписывании приложений Python в Go и последующей замены приложений C на Go (Источник).

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

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

Обратит внимание, что при поиске информации о Go в Интернете лучше задействовать ключевое слово golang, то есть Go language. Суффикс -lang может использоваться и с другими языками программирования вроде Ruby, Rust и так далее.

Go Playground — Запуск кода онлайн

Начать практиковаться в Go можно на официальном сайте языка, где для этого есть специальный редактор — Go Playground. Здесь можно редактировать, выполнять и экспериментировать с Go без необходимости предварительно устанавливать что бы то ни было. При нажатии на кнопку Run код будет скомпилирован и выполнен на серверах Google, после чего отобразится результат.

При нажатии на кнопку Share вы получите ссылку на созданный код. Ее можно отправить друзьям или сохранить в закладках.

На заметку: Для проверки кода из примеров, данных далее, можете использовать Go Playground. Если вы уже знакомы с текстовыми редакторами и командной строкой, можете скачать и установить Go на компьютер.

Пакеты и функции в Golang

При переходе на Go Playground вы увидите следующий код. Это неплохая начальная точка.

В данном кратком коде представлено три ключевых слова: package , import и func . У каждого слова есть свое предназначение.

Ключевое слово package объявляет пакет, которому текущий код принадлежит. В данном случае пакет называется main . Весь код Go строится на концепции пакетов.

Предоставляется стандартная библиотека, в которой есть пакеты для:

  • математики;
  • сжатия данных;
  • криптографии;
  • обработки изображений и многого другого.

Каждый пакет соответствует одной идее.

На следующей строке используется ключевое слово import для уточнения пакетов, которые будут задействованы в коде. Пакеты могут содержать любое количество функций. К примеру, пакет math предоставляет функции вроде Sin , Cos , Tan и Sqrt (квадратный корень).

Используемый здесь пакет fmt нужен для функций форматированного ввода и вывода. Отображение текста на экране является обычной операцией, поэтому название пакета было сокращено до более удобного — fmt .

Гоферы, или разработчики Go, произносят слово fmt как «FOOMT!», будто эффект взрыва из комикса.

Ключевое слово func объявляет функцию, в данном случае это main . Тело каждой функции обрамляется фигурными скобками <> . Именно с такой скобки начинается и заканчивается каждая функция Go.

Идентификатор main особенный. При запуске программы Go выполнение начинается с функции main из пакета main . Если в коде нет main , компилятор Go выдаст ошибку, так как без нее он не будет знать, где начинается программа.

Для вывода строки текста используется функция Println ( ln сокращенно от line, то есть строка). У Println ставится префикс fmt , за которым следует точка. Это знак того, что здесь задействован пакет fmt . При использовании функции из импортированного пакета перед названием функции всегда ставится префикс с названием пакета и точкой. По этой причине во время чтения программы Go сразу понятно, к какому пакету относится каждая функция.

Запустите данную программу в Go Playground, чтобы получить текст Hello, playground . Текст, заключенный в кавычки, отобразится на экране. При написании обычного предложения поставленная не в том месте запятая может сильно изменить смысл фразы. Пунктуация играет важную роль и в программировании. В Go используются кавычки и скобки различного вида, которые позволяют облегчить процесс написания и чтения кода.

Скобки в Golang

Go достаточно придирчив в плане места размещения фигурных скобок <> . В предыдущем примере открывающая скобка < находится на той же строке, что и ключевое слово func . Закрывающая скобка >расположена на отдельной строке. Это единственный правильный скобочный стиль, также известный как one true brace style или 1TBS.

Чтобы понять, как Go стал таким строгим языком, нужно вернуться к времени его создания. Тогда структура кода был переполнена точками с запятой. Они были везде. Каждый оператор заканчивался точкой с запятой. К примеру:

Обучение Golang с Нуля: ТОП-20 Лучших Курсов для Начинающих [2020]

Привет, дружище! На связи Шаполов Алексей. В этой статье ты найдёшь только самые лучшие курсы Golang для начинающих с нуля . ☟

Готов начать обучение Golang-разработке? Тогда полетели! 🚀

А ты знал, что Go-программисты зарабатывают в среднем более 50 000 рублей в месяц?

ТОП-20 платных и бесплатных курсов по Golang

№1. Golang-разработчик с нуля

Кто проводит курс: онлайн-университет «Нетология».

Сколько длится: 6 месяцев.

Что ты узнаешь и чему научишься из курса:

  • Разрабатывать приложения на основе микросервисов
  • Использовать HTML, CSS и JavaScript
  • Работать с фронтенд-технологиями, чтобы создавать красивую оболочку для приложений.
  • Работать с базами данных

— Освоишь кроссбраузерную вёрстку и тестирование вёрстки

— Научишься работать с DevTools

— Узнаешь, что такое семантическая разметка страницы и вёрстка текста

— Познакомишься с вёрсткой элементов, доступных для Screen Readers

— Освоишь вёрстку элементов, доступных для управления с клавиатуры

— Научишься оформлять код

Стоимость: 89 900 53 940 рублей.

Твои навыки после прохождения курса:

  • Вёрстка под тач и мобильные устройства
  • Создание интерактивных веб-страниц
  • Работа с JavaScript
  • Использование выражений в JavaScript
  • Навыки использования библиотеки React, JSX, React router, VirtualDom
  • Работа с языком Go
  • Работа с файлами и сетью, HTTP 1.1, HTTP 2
  • Docker & Docker Compose: управление сервисами и упаковка приложений
  • Нереляционные базы данных — MongoDB
  • Микросервисная архитектура
  • Kubernetes

Отзывы:

Нюансы и особенности:

  • Домашние задания с проверкой
  • Общение с наставником
  • Во время курса, кроме Golang, ты также освоишь — HTML, CSS и React
  • Сделаешь сразу 3 проекта для портфолио — онлайн-игру, калькулятор ипотеки, корпоративную социальную сеть
  • Получишь диплом о профессиональной переподготовке установленного образца
  • За 6 месяцев пройдёшь путь от юного падавана до junior-разработчика

№2. Факультет Go-разработки

Кто проводит курс: онлайн-университет GeekBrains совместно с Mail.ru Group.

Сколько длится: 18 месяцев.

Язык программирования Go: мнения и перспектива

Введение

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

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

Применение

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

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

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

Плюсы языка 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 значительно облегчена кроссплатформенность.

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

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

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

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

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

Минусы языка 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

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

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

История развития Go

Язык Go элегантен и прагматичен, но некоторые его особенности имеют смысл только под определенным историческим контекстом. История Go начинается с Си. Во многих отношениях Си стал основой для создания JavaScript, Ruby, Python, C++, C# и Java. Компиляторы или интерпретаторы некоторых из этих языков даже написаны на Си. Влияние Си легко заметить во многих языках. Он был разработан Денисом Ритчи для создания ядра Unix и потом использовался для создания ядра Linux.

Язык Go был создан легендами эпохи Unix и Си. Работая Google, Роберт Грисемер, Роб Пайк и Кен Томпсон были разочарованы в Си-языках из-за их проблем. Бъярн Страуструп, создать C++ говорил так: «Си позволяет легко выстрелить себе в ногу, в C++ это сложнее, но если вы все же выстрелите, то взорвете ногу целиком».

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

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

Также можно найти определенное сходство с динамическими языками, Go перенимает стиль написания кода у Python, настраиваемость у Ruby и простой параллелизм, вшитый в ядро языка, как у Node.js. Все начиналось, как язык, решающий некоторые проблемы Си и выросло в прекрасный язык программирования общего назначения.

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

Перед тем как мы перейдем к примерам написания программ, хотелось бы немного поговорить про синтаксис языка.

1. Синтаксис языка Go

Самое главное о чем стоит сказать — это структура программы. Она чем-то похожа на Java и Python. Программа разделяется на так называемые пакеты Package, которые можно рассматривать как альтернативу include или модулей в Python. В дополнение package позволяют настраивать области видимости для переменных. Импортируется пакет в программу с помощью инструкции import:

import имя_пакета

Любая программа будет иметь переменные. Go — это язык со строгой типизацией, поэтому каждую переменную перед использованием нужно объявить и указать ее тип:

var имя_переменной тип

В именах переменных можно использовать русский язык. Но если сразу задать переменной значение, то язык сам определит ее тип:

var имя_переменной := значение

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

var *имя_переменной тип

Чтобы получить доступ к переменной, которая была объявлена внутри package из другого package важно заметить, что доступны извне только переменные, написанные с большой буквы:

имя_пакета . имя_переменной
имя_пакета . имя_функции

Основные управляющие инструкции очень схожи по своему синтаксису с привычными в Си:

if условие <
действия
>

Цикл for тут точно такой, как и в Си, только без круглых скобок, так выглядит даже проще:

for i := 0; i package main
import ( «fmt»)

func main() <
fmt.Println(«Hello, playground»)
>

Как видите, синтаксис почти соответствует тому, что мы рассматривали ранее. В первой строке мы указываем, что этот файл относиться к пакету main, во второй импортируем пакет fmt, отвечающий за стандартные функции ввода и вывода. Скобки здесь нужны чтобы за один раз импортировать несколько пакетов, можно просто добавить имена через запятую.

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

Внутри функции main мы вызываем функцию библиотеки fmt, которую импортировали ранее с помощью синтаксиса точки. Метод printLn выводит строчку на экран.

Для языка Go был принят определенный синтаксис. Даже если компилятор не будет выдавать ошибок из-за несоответствия, его лучше соблюдать. Для имен переменных принято использовать верблюжий синтаксис, то есть FooBar или Foobar вместо foo_bar. А также обратите внимание, что Go не терпит никаких символов перед открывающей скобкой. Даже если поставить перевод строки, вы получите ошибку:

Также в Go стандартизированы отступы, хотя здесь нет таких требований, как в Python.

3. Основы языка Go

Рассмотрим работу с переменными и структурами. Это будет полезно начинающим пользователям. Как я уже говорил, язык имеет статическую типизацию. В Python, Ruby или JavaScript нужно выполнять множество проверок на правильность. Go избавляет от этой проблемы. Например, усложним наш предыдущий пример:

В этом примере, за вывод отвечает новая функция — print. Здесь явно указано, что ей нужно передать строку (string). А в функции main мы создаем переменную типа string и передаем ее в print. Если передать что-то другое, получим ошибку. Если, например, вы поменяете тип переменной на int, то получите это:

cannot use «Привет мир!» (type string) as type int in assignment

Также вы получите ошибку, если объявили переменную или импортировали пакет, но не используете его. Существует еще множество вещей, которые можно сделать с помощью Go, одна из них — это структуры. Давайте еще больше усложним нашу программу, создадим структуру site, с полями name и url, которая будет описывать какой-либо сайт:

В структуры будет метод print, который выводит строку «Добро пожаловать. «. В методе main мы инициализировали структуру и присвоили ее полям значения, а затем вызвали метод print.

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

Выводы

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

Читать еще:  Сайты для изучения программирования
Ссылка на основную публикацию
Adblock
detector