С чего начать учить golang

Из техпода в программисты (или Golang для самых маленьких)

Доброго времени суток, Хабровчане!

Предисловие

Мне 26 лет, 5.5 лет проработал в технической поддержке и окончательно выгорел. Решил заниматься тем, что меня действительно воодушевляет и от чего испытываю удовольствие.

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

На своём жизненном пути я уже знакомился с HTML, CSS и его препроцессорами, Javascript, PHP, SQL, немного Python, C#, Java. Даже реализовал несколько веб проектов, решил некоторые рабочие задачи, но меня постоянно что-то не устраивало. Я хотел найти “идеальный” для себя язык с которым мне было бы приятно работать и наткнулся на Golang.

Почему именно Golang? Go понравился мне по нескольким причинам.

“Из коробки” имеет многопоточность

Сборщик мусора о котором нет необходимости задумываться

Развивается как open source проект

Что рассмотрим в этой статье

Что нужно для работы с Go

Основные типы данных

Условные выражения и условные конструкции

Что нужно для работы с Go

Для написания кода можно использовать специальные интегрированные среды разработки (IDE), которые поддерживают Go.

Самая многофункциональная IDE представлена компанией JetBrains и называется она GoLand, но не спешите её устанавливать. Есть ряд причин почему нет необходимости в таком большом инструменте.

для знакомства с языком и написания своих первых пет-проектов хватит и инструментов описанных ниже

Другие инструменты для разработки на Go:

Visual Studio Code + плагин для разработки на Go

Atom + плагин для разработки на Go

Sublime Text + плагин для разработки на Go

Существуют и другие IDE у которых есть плагины для Go например: Intellij IDEA, Netbeans. Но не думаю что стоит заострять на них внимание т.к. это достаточно большие IDE с обширным функционалом и новичок в них очень легко запутается.

Также можно программировать на Go прямо из браузера не устанавливая ничего на своё устройство.

Переменные

В Go имя переменной может быть произвольным и может состоять из алфавитных и цифровых символов, а также символа подчеркивания. При этом при объявлении переменной первый символ должен быть либо алфавитный символ, либо символ подчеркивания. Важно, что имена переменных не могут быть такими же как зарезервированные в Go кодовые слова: break, case, chan, const, continue, default, defer, else, fallthrough, for, func, go, goto, if, import, interface, map, package, range, return, select, struct, switch, type, var.

Самое простое определение переменной:

Эта переменная называется hello и представляет строковый тип данных string.

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

В этом случае объявлены переменные a, b и c которые имеют тип данных string. В конце также указывается тип данных и все переменные ему принадлежат.

Одновременно с объявлением переменной ей можно присвоить какое-то значение:

Такой прием называется инициализацией

Неявная типизация

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

Так же можно объявить переменную сокращенным способом:

Такой способ эквивалентен предыдущему.

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

Поэтому необходимо либо указать тип, либо начальное значение, либо и то и другое

Так же можно объявить несколько переменных

Основные типы данных

Стандартное значение для всех числовых типов = 0

Целочисленные типы

Тип с плавающей точкой

Они же десятичные дроби.

Комплексные типы

В Go присутствуют комплексные типы данных. На практике они имеют не очень большую популярность.

Подробнее про комплексные числа можете прочитать здесь

Логический тип

Строковый тип

Помимо обычных символов строка может содержать в себе специальные символы

Константы

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

Для определения константы используется ключевое слово const.

Если мы попробуем изменить значение константы, то получим ошибку.

В одном представлении можно объявить сразу несколько констант

Если у константы не указан тип, то он выводится неявно в зависимости от того значения каким инициализируется константа

Также константам обязательно необходимо присваивать значения при объявлении.

Такое объявление констант недопустимо, потому что они не инициализируются.

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

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

Арифметические операции

У переменных есть разные операции, как в алгебре.

+ сложение

— вычитание

* умножение

/ деление

При делении необходимо быть внимательным! Если в операции два целых числа, то результат деления будет округляться до целого числа даже если результат деления присваивается переменной типа float32/float64:

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

% (деление по модулю) возвращает остаток от деления. В этой операции могут быть использованы только целые числа:

Постфиксный инкремент (x++). Увеличивает значение переменной на единицу:

Постфиксный декремент (x—). Уменьшает значение переменной на единицу:

Комментарии

Программа может содержать в себе комментарии. Комментарии необходимы для описания действий которые производит программа или какие-то её части. При компиляции программы комментарии не учитываются и не оказывают никакого влияния на работы программы. Комментарии бывают однострочными и многострочными.

Однострочный комментарий пишется в одну строку после двойного слеша (//), многострочный комментарий может заключаться между символами /* и */ и занимать несколько строк:

Ввод/вывод данных

Работать с переменными конечно интересно, но намного интереснее работать с ними и видеть как их значения выводятся через консоль. Для того чтобы это сделать, необходимо воспользоваться методом Scan из стандартного пакета Go под названием fmt, например:

Если проще, то введённое число или слово в консоль, запишется в эту переменную и будет в ней храниться пока не понадобится изменить значение переменной.

Теперь можно прочитать например, имя и возраст. Для начала создадим файл в любом удобном для вас месте на вашем компьютере. В моём случае это файл main.go расположенный по пути E:\main.go и содержит в себе следующий код:

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

Далее чтобы увидеть работу этого кода и поиграть с ним, необходимо запустить командную строку или терминал. Например: Git Bash, встроенный терминал LiteIDE. Если пользуетесь этой IDE как я, терминал можно запустить сочетанием клавиш Ctrl+Shift+4. Итак, вводим заветную команду go run main.go и нажимаем Enter.

После консоль просит нас по очереди ввести имя и возраст. Когда программа получает эту информацию, выводится строка “Человеку по имени Авдей, 99 лет.” и программа завершает свою работу.

Условные выражения и условные конструкции

Операции отношения позволяют сравнивать два значения. В Go есть следующие операции отношения:

== Операция “равно”, возвращает true, если оба операнда равны или false если они не равны.

> Операция “больше чем”, возвращает true, если первый операнд больше второго, и false если первый операнд меньше второго, либо оба операнда равны.

= Операция “больше или равно”, возвращает true, если первый операнд больше второго или равен второму, и false если первый операнд меньше второго.

Заключение

В заключении статьи хотелось бы поделиться полезными ссылками:

50 оттенков Go. Очень полезная статья, спасибо VK Team за перевод оригинала

Для тех кто любит проходить различные курсы:

Программирование на Golang (курс составлен неплохо, но полные новички возможно испытают некоторые сложности из-за того, что нельзя посмотреть какими тестами облагаются задания)

Ресурсы с заданиями для практики:

Exercism. Имеется множество заданий различной сложности. Можно быть как студентом, так и ментором.

Спасибо за внимание. До новых встреч! Комментарии в студию 🙂

Источник

Язык Go для начинающих

С чего начать учить golang. 667f8f4964d6951ab27d15ece675161e. С чего начать учить golang фото. С чего начать учить golang-667f8f4964d6951ab27d15ece675161e. картинка С чего начать учить golang. картинка 667f8f4964d6951ab27d15ece675161e. Доброго времени суток, Хабровчане!

Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.

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

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

Основные преимущества языка Go:

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

Итак, вернемся к нашей задаче. Хоть язык и не накладывает ограничений на структуру проекта, данное приложение я решил организовать по модели MVC. Правда View реализовывается на стороне клиента. В моем случае это был AngularJS, в перспективе — нативное мобильное приложение. Здесь я расскажу лишь об API на стороне сервиса.

Структура проекта получилась следующая:

Программа в Go разделяется на пакеты (package), что указывается в начале каждого файла. Имя пакета должно соответствовать директории в которой находятся файлы, входящие в пакет. Так же, должен быть главный пакет main с функцией main(). Он у меня находится в корневом файле приложения loctalk.go. Таким образом, у меня получилось 5 пакетов: conf, controllers, models, utils, main.
Буду приводить неполное содержание файлов, а только минимально необходимое для понимания.

Пакет conf содержит константы и настройки сайта.

Думаю, комментировать тут нечего. Функция init() вызывается в каждом пакете до вызова main(). Их может быть несколько в разных файлах.

В самом верху определяется имя пакета. Далее идет список импортируемых пакетов. Мы будем использовать пакет Martini. Он добавляет легкую прослойку для быстрого и удобного создания веб-приложений. Обратите внимание как импортируется этот пакет. Нужно указать путь к репозиторию откуда он был взят. А чтобы его получить, достаточно в консоли набрать команду go get github.com/go-martini/martini

Далее мы создаем экземпляр Martini, настраиваем и запускаем его. Обратите внимание на знак « := ». Это сокращенный синтаксис, он означает: создать переменную соответствующего типа и инициализировать ее. Например, написав a := «hello», мы создадим переменную a типа string и присвоим ей строку «hello».

Переменная m в нашем случае имеет тип *ClassicMartini, именно это возвращает martini.Classic(). * означает указатель, т. е. передается не само значение, а лишь указатель на него. В метод m.Use() мы передаем функцию-обработчик. Этот Middleware позволяет Martini делать определенные действия над каждым запросом. В данном случае, мы определяем Content-Type для каждого запроса. Метод m.Map() же позволяет привязать нашу структуру и использовать ее затем в контроллерах при необходимости (механизм dependency injection). В данном случае, я создал обертку для кодирования структуры данных в формат json.

Тут же мы создаем внутреннюю функцию Auth, которая проверяет авторизацию пользователя. Ее можно вставить в наши роуты и она будет вызываться до вызова контроллера. Эти вещи возможны благодаря Martini. С использованием стандартной библиотеки код получился бы немного другой.

Взглянем на файл errors.go пакета conf.

Язык поддерживает возврат нескольких значений. Вместо механизма try-catch, очень часто используется прием, когда вторым аргументом возвращается ошибка. И при ее наличии, она обрабатывается. Есть встроенный тип error, который представляет из себя интерфейс:

Таким образом, чтобы реализовать этот интерфейс, достаточно иметь метод Error() string. Я создал свой тип для ошибок ApiError, который более специфичен для моих задач, однако совместим со встроенным типом error.

Обратите внимание на — type ApiError struct. Это определение структуры, модели данных, которую вы будете использовать постоянно в своей работе. Она состоит из полей определенных типов (надеюсь, вы успели заметить, что тип данных пишется после имени переменной). Кстати, полями могут быть другие структуры, наследуя все методы и поля. В одинарных кавычках « указаны теги. Их указывать не обязательно. В данном случае они используются пакетом encoding/json для указания имени в выводе json (знак минус «-» вообще исключает поле из вывода).

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

Далее мы определяем предустановленные ошибки и заполняем их поля. Поля вида http.StatusBadRequest — это значения типа int в пакете http для стандартных кодов ответа, своего рода алиасы. Мы используем сокращенный синтаксис объявления структуры &ApiError<> с инициализацией. По другому можно было бы написать так:

Символ & означает получить указатель на данную структуру. Оператор new() так же возвращает указатель, а не значение. По-началу возникает небольшая путаница с указателями, но, со временем, вы привыкните.

Перейдем к нашим моделям. Приведу урезанную версию модели постов:

Здесь мы используем замечательный драйвер для MongoDb — mgo, чтобы сохранять данные. Для удобства, я создал небольшую обертку над api mgo — utils.NewDbSession. Логика работы с данными: сначала мы создаем объект во внутренней структуре языка, а затем, с помощью метода этой структуры, сохраняем его в базу данных.

Обратите внимание, что в этих методах мы везде используем наш тип ошибки conf.ApiError. Стандартные ошибки мы конвертируем в наши с помощью conf.NewApiError(err). Так же, важен оператор defer. Он исполняется в самом конце выполнения метода. В данном случае, закрывает соединение с БД.

Что ж, осталось взглянуть на контроллер, который обрабатывает запросы и выводит json в ответ.

Здесь мы получаем из URL id запрашиваемого поста, создаем новый экземпляр нашей структуры и вызываем на ней метод LoadById(id) для загрузки данных из БД и заполнения данной структуры. Которую мы и выводим в HTTP ответ, предварительно преобразовав в json нашим методом mu.Marshal(post).

Обратите внимание на сигнатуру функции:

Входные параметры нам предоставляет Martini с помощью механизма внедрения зависимостей (dependency injection). И мы возвращаем два параметра (int, []byte) — число (статус ответа) и массив байт.

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

Для изучения могу порекомендовать хорошую книгу на русском «Программирование на языке Go» Марка Саммерфильда. И, конечно, больше практиковаться.

Источник

14 бесплатных онлайн-курсов по Golang

Для начинающих с нуля. До уровня PRO. 💪

1. «Golang для начинающих» от itProger

С чего начать учить golang. image 115. С чего начать учить golang фото. С чего начать учить golang-image 115. картинка С чего начать учить golang. картинка image 115. Доброго времени суток, Хабровчане!

Длительность: 9 уроков.

Формат обучения: видеоуроки + текстовые материалы + практические задания.

Программа обучения

Что узнаете и чему научитесь

Плюсы и минусы курса

Кто проводит

ItProger — онлайн-школа программирования и сообщество программистов, которое существует уже более четырёх лет. У школы есть свои группы в соцсетях, где специалисты из сферы IT обмениваются новостями в индустрии и обсуждают тонкости своей работы.

2. «Разработка веб-сервисов на Go — основы языка» от МФТИ совместно с Mail.ru Group

С чего начать учить golang. golang courses. С чего начать учить golang фото. С чего начать учить golang-golang courses. картинка С чего начать учить golang. картинка golang courses. Доброго времени суток, Хабровчане!

Длительность: 4 недели.

Сертификат: выдаётся (платно).

Формат обучения: видеоуроки + текстовые материалы + тесты.

Программа обучения

Чему вы научитесь

Плюсы и минусы курса

О преподавателе

Лекции ведёт Романов Василий Вячеславович — технический директор Mail.ru On-Premise Solutions, преподаватель, читающий курсы в ведущих технических вузах страны: МГУ, МГТУ им. Баумана и НИЯУ МИФИ.

Более 7 лет занимается разработкой.

3. «Разработка веб-сервисов на Golang. Часть 2» от МФТИ совместно с Mail.ru Group

С чего начать учить golang. golang courses1. С чего начать учить golang фото. С чего начать учить golang-golang courses1. картинка С чего начать учить golang. картинка golang courses1. Доброго времени суток, Хабровчане!

Длительность: 4 недели.

Сертификат: выдаётся (платно).

Формат обучения: видеоуроки + текстовые материалы + тесты.

Программа обучения

О чём курс

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

Плюсы и минусы курса

О преподавателе

Лекции ведёт Романов Василий Вячеславович — технический директор Mail.ru On-Premise Solutions, преподаватель, читающий курсы в ведущих технических вузах страны: МГУ, МГТУ им. Баумана и НИЯУ МИФИ.

Более 7 лет занимается разработкой.

4. «Программирование на Golang» от Stepik

С чего начать учить golang. golang courses12. С чего начать учить golang фото. С чего начать учить golang-golang courses12. картинка С чего начать учить golang. картинка golang courses12. Доброго времени суток, Хабровчане!

Объём: 30 уроков, 63 теста, 86 интерактивных задач.

Формат обучения: текстовые уроки + тесты + интерактивные задачи + общение в закрытом чате в Telegram.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

О преподавателях

Курс подготовлен молодыми студентами из разных технических университетов стран СНГ. Ребята занимаются разработкой не первый год и даже успели поработать с крупными компаниями — это очередное доказательство того, что программирование становится всё актуальнее с каждым годом.

5. «Изучаем Go программирование на Golang Learn Go» от Be Geek

Объём: 21 урок.

Формат обучения: видеоуроки.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

6. «Программирование на Go» от «Технострим Mail.Ru Group»

Объём: 9 уроков = 16-18 часов на освоение материала.

Формат обучения: видеоуроки.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

Об авторах

«Технострим» — это образовательный канал для программистов от компании Mail.Ru Group. Все видео выходят на платформе YouTube и уже давно заслужили доверие специалистов.

7. «Курс по изучению Golang для начинающих» от Golangs.org

С чего начать учить golang. image 312. С чего начать учить golang фото. С чего начать учить golang-image 312. картинка С чего начать учить golang. картинка image 312. Доброго времени суток, Хабровчане!

Объём: 35 уроков.

Формат обучения: текстовые уроки.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

8. «Golang» от ITVDN

Объём: 8 уроков.

Формат обучения: видеоуроки.

Программа обучения

Чему вы научитесь

Плюсы и минусы курса

Об авторах

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

9. «Уроки Golang» от AJ Golang Learn

Объём: 18 уроков.

Формат: видеоуроки.

Программа обучения

Чему вы научитесь

Курс охватывает самые основы разработки на языке Golang и будет понятен даже новичкам в программировании — небольшие уроки, в которых автор объясняет термины простым языком, станет хорошим подспорьем для тех, кто совсем недавно заинтересовался сферой IT.

Плюсы и минусы курса

10. «Погружение в Google Go» от Романа Левищенко

Объём: 25 уроков.

Формат: видеоуроки.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

11. «Научись программировать на Go» от Булата Замалутдинова

Объём: 10 уроков.

Формат: видеоуроки на платформе YouTube.

Программа обучения

Чему вы научитесь

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

Плюсы и минусы курса

12. «Golang Tutorials» от Tech With Tim

Длительность курса: 22 урока.

Формат обучения: видеоуроки.

Обратная связь: нет.

Программа обучения:

13. «Go Language Programming Practical Basics Tutorial» от Sentdex

Длительность курса: 24 урока.

Формат обучения: видеоуроки.

Обратная связь: нет.

Что освоите:

Кто проводит курс

С чего начать учить golang. image 314. С чего начать учить golang фото. С чего начать учить golang-image 314. картинка С чего начать учить golang. картинка image 314. Доброго времени суток, Хабровчане!

Харрисон Кинсли

14. «Go Language Training» от ProgrammingKnowledge

Длительность курса: 30 уроков.

Формат обучения: видеоуроки.

Обратная связь: нет.

Что узнаете и чему научитесь:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *