Golang- все статьи тега


Ловушка для горутины

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

Кто на свете всех сильнее - Java, Go и Rust в сравнении

(adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-1591034030238691", enable_page_level_ads: true }); (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-1591034030238691", enable_page_level_ads: true }); Мне показалось интересны...

Примитивы синхронизации в Go

Изучаем Mutex, WaitGroup и Once с примерами В данной статье кратко рассмотрим некоторые конструкции низкоуровневой синхронизации, которые наряду с горутинами и каналами предлагает нам один из самых популярных стандартных библиотечных пакетов Go, а именно пакет sync. Таких конструкций очень много, а мы изучим лишь три из них, зато с примерами: Wait...

4 golang-сниппета, которые вводят в заблуждение разработчиков C#!

Поскольку объекты в #JavaScript являются ссылочными значениями, их нельзя просто скопировать с помощью =. Но не беспокойтесь, существует 3 способа клонирования объекта ?. const food = { beef: '?', bacon: '?' } // "Spread" { ...food } // "Object.assign" Object.assign({}, food) // "JSON" JSON.parse(JSON.stringify(food)) // RESULT: // { beef: '?'...

Обработка ошибок в Golang с помощью Panic, Defer и Recover

В Golang предусмотрен простой интерфейс для ошибок. Любая ошибка, возвращаемая в Golang, следует такому определению интерфейса: type error interface { Error() string } Создание сообщения об ошибке в Golang Простое сообщение об ошибке в Golang создаётся с помощью такого синтаксиса: package main import ( "errors" "fmt" ) func calc...

Go на пороге третьего десятилетия 21 века: язык программирования для искусственного интеллекта и науки о данных

Python появился 30 лет назад, но только через 20 лет получил признание разработчиков. Он колоссально вырос за это время, особенно за последние пять лет и к 2019 году стал вторым по популярности языком программирования. Python стал основным языком для разработчиков, занимающихся машинным обучением и наукой о данных. В ближайшие несколько лет домини...

Как сделать приложение-чат с Redis, WebSocket и Go

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

Обработка ошибок в Go

Обработка ошибок в Go постоянно вызывает споры и возникает среди тем ежегодного опроса о сложнейших проблемах, с которыми встречаются разработчики, пишущие на этом языке. Тем не менее, когда дело доходит до работы с ошибками в конкурентной среде или объединении ошибок одной горутины, Go предлагает отличные пакеты, которые упрощают их обработку. Да...

Конкурентность и параллелизм в Golang. Горутины.

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

Приключения Java-разработчика, решившегося изучать Go

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

Go скучный. И это здорово!

Я профессионально занимаюсь разработкой вот уже почти 23 года, а программы пишу в общей сложности почти 38 лет. За это время мне приходилось пользоваться множеством языков программирования. Я их очень люблю, люблю узнавать об их новых функциях и изменениях, которые они претерпели по сравнению с более старыми языками. Если оглянуться на 10 лет наза...

Сравнение Go и Rust через написание CLI-инструмента

В этой статье я описал свой увлекательный опыт создания небольшого CLI-приложения на двух малознакомых мне языках — Go и Rust. Если вы предпочитаете сразу перейти к самому коду и самостоятельно сравнить эти два варианта, то можете найти их по следующим ссылкам: Go и Rust. О проекте У меня есть собственный проект под названием Hashtrack, который яв...

Использование инверсии зависимостей в Go

Что такое инверсия зависимостей?Пример с решениемФункция высшего порядкаКонструкторИспользование опцийТестирование реализацииЗаключение Что такое инверсия зависимостей? Её идея заключается в том, что высокоуровневая логика не должна зависеть от низкоуровневых реализаций. Бизнес-логике в приложении не должно быть дела до того, получаем ли...