Category : golang

golang
О массивах и слайсах в Go

Массивы в Go являлись для меня одной из сложных тем, так как я не понимал как они работают. В данной статье рассмотрим как же именно работают слайсы и массивы в Go, а также как именно работает append и copy.МассивыМассивы - коллекция элементов одного типа. Длина массива не может изменяться. Вот как мы можем создать массив в Go:arr := [4]int{3,2,5,4} Если мы создадим два массива в Go с разными длинами, то два массива будут иметь разные типы, так как длина массива в Go, входит в его тип:a := [3]…

  • вторник, 6 июня 2023 г. в 00:00:17
golang
Погружение в мокирование gRPC сервисов в Go: Тестирование без выполнения RPC вызовов

Для чего я это написалВстала задача покрыть тестами обработчики http запросов для моего учебного проекта, и я захотел лучше понять данную тему.НачнёмПроект, к которому необходимо было написать тесты, использовал gRPC в качестве протокола для вызова методов сервисов. То есть тестировал я api-gateway - все запросы приходили в него.Так как с тестированием я знаком не был от слова совсем, то и не понимал, каким же образом тестировать обработчик, который вызывает метод микросервиса. Ведь там под ка…

  • вторник, 6 июня 2023 г. в 00:00:16
golang
Сколько памяти нужно для запуска 1 миллиона параллельных задач?

В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir. Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие зани…

  • понедельник, 5 июня 2023 г. в 00:00:19
golang
Основы тестирования Go: простые тесты, testify и визуализация покрытия

Автор статьи: Рустем ГалиевIBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBM Привет Хабр! Иногда мне приходится расширять функционал наших платформ по запросам разработчиков и в для этого мне отлично подошел Go. Однако нужно не только уметь писать на языке, но и уметь его тестировать. Как вы поняли, сегодня я хотел бы рассказать про основы тестирования в Go.Тестирование — это первостепенная задача в Go. Пакет тестирования предоставляет API для напи…

  • суббота, 3 июня 2023 г. в 00:00:19
golang
Как обрабатывать ошибки в Golang – рассказываем на собственном примере

Всем привет. Меня зовут Алексей Бурмистров, я senior Golang разработчик в Quadcode. В процессе разработки биллинга, мы столкнулись с различными типами ошибок, которые могут возникать во время выполнения программы. В данной статье я хочу поделиться нашим опытом в структурировании и обработке этих ошибок, а также представить подходы, которые мы применили для их эффективной обработки и диагностики. Наша основная цель заключается в создании понятных и легко обрабатываемых ошибок, которые гарантиру…

  • пятница, 2 июня 2023 г. в 00:00:22
golang
Осваиваем чистую архитектуру кода на Golang: практическое руководство по сущностям и слоям моделей

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

  • пятница, 2 июня 2023 г. в 00:00:19
golang
[Разбор резюме] Бэкендер на Go: почему «ключевые навыки» никому не нужны и как уместить весь опыт н…

Привет, Хабр! Мы много разговариваем про найм, и решили запустить новую рубрику — разбор резюме. В ней наши профессиональные HR, которые регулярно просматривают сотни резюме, будут смотреть на присланные CV специалистов и советовать, что в них можно улучшить. Делать мы это будем именно с точки зрения HR-специалистов: они расскажут, что именно их бы оттолкнуло, а что — привлекло. Начнем с резюме бэкендера и дальше пойдем по другим профессиям.Если хотите, чтобы ваше резюме тоже так разобрали, пр…

  • суббота, 27 мая 2023 г. в 00:00:16
golang
Системные вызовы в go

Всем привет!Всеми нами любимый docker является абстракцией над операционной системой linux, kubernetes является абстракцией над docker, а openshift - это высокоуровневый дистрибутив kubernetes удобный для пользователя.Технологии сейчас строятся на фундаменте из открытых программ, а самый очевидный путь их использования - системные вызовы из ваших собственных программ.Все современные языки программирования предоставляют различные интерфейсы для совершения системных вызовов, на мой взгляд одна и…

  • пятница, 26 мая 2023 г. в 00:00:18
golang
Для чего нужен тип http.ResponseController?

Одно из моих самых любимых нововведений в недавнем релизе Go 1.20 — это тип http.ResponseController, который может похвастаться тремя очень приятными полезностями:Теперь вы можете переопределять ваши общесерверные таймауты/дедлайны чтения и записи новыми для каждого отдельного запроса.Шаблон использования интерфейсов http.Flusher и http.Hijacker стал более понятным и менее сложным. Нам больше не нужны никакие утверждения типов!Он делает проще и безопаснее создание и использование пользовательс…

  • четверг, 25 мая 2023 г. в 00:00:18