Category : golang

golang
Rust против Go: практическое сравнение

Rust против Go — тема, которая постоянно возникает, и о ней уже много написано. Частично это связано с тем, что разработчики ищут информацию, которая поможет им решить, какой язык использовать для своего следующего (веб) проекта.В конце концов, оба языка можно использовать для написания быстрых и надежных веб-сервисов. С другой стороны, их подходы к достижению этой цели совершенно разные, и трудно найти хорошее сравнение, которое было бы справедливо по отношению к обоим языкам. Этот пост — моя…

  • пятница, 29 сентября 2023 г. в 12:52:55
golang
Визуализация исходного кода на языке golang

Исходный код программы надо визуализировать - отобразить в виде схем для лучшего понимания, изучения, осмысления, создания документации и др.Рисовать схемы вручную никто хочет - надо создавать их полностью автоматически.Предлагаю вниманию несколько инструментов для визуализации кода:Граф зависимостей модулей языка golang, с отображением директорий.Граф подключений к внешним сервисамПриложения для автоматического создания схемы таблиц и колонок в БД Postgres (ERD-diagram)Все инструменты бесплат…

  • четверг, 28 сентября 2023 г. в 00:00:19
golang
Golang глазами PHP-программиста

Hello WorldКак-то появилась причина попробовать пописать на Go. На тот момент я знал, что это язык от Google, язык молодой, язык компилируемый, вроде как активноразвивающийся и с зарплатами выше средних. Неплохой набор.В первой попавшейся статье узнаем, что Go к тому же легкий в изучении. Интересно, сколько PHP-программистов стало PHP-программистами, потому что PHP легкий в изучении? И действительно, за пару вечеров можно уже неплохо ориентироваться в языке.Итак, ищем какой-нибудь golang roadm…

  • четверг, 28 сентября 2023 г. в 00:00:19
golang
Некоторые советы, которые я почерпнул из книги «100 ошибок в Go»

Недавно я закончил читать книгу Тейвы Харсаньи "100 ошибок и как их избежать", и вместо того, чтобы писать рецензию (всем, кто работает с Go, стоит ее прочитать), я решил поделиться четырьмя ошибками, которые показались мне интересными и о которых я раньше не знал. #13. Создание пакетов утилит Поэтому я упорно придерживаюсь принципа: в большинстве своих проектов я пишу пакеты утилит в тот момент, когда какой-либо фрагмент кода используется более одного раза. При этом я обычно называ…

  • четверг, 28 сентября 2023 г. в 00:00:18
golang
Битва за производительность: SparseMap vs GenerationsMap

Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map. Она используется, например, в недрах компилятора Go. А ещё в некоторых пакетах его стандартной библиотеки. У неё есть много интересных свойств и, чем больше я о ней думаю, тем больше применений нахожу в своих задачах. Казалось бы, всё так хорошо, что лучше быть просто не может. Однако сегодня я расскажу вам о секретной штуке, которая будет экономить ещё больше бесценных наносекунд! Предисловие Надеюсь, у меня…

  • воскресенье, 24 сентября 2023 г. в 00:00:18
golang
Реверс бинарных файлов Golang с использование GHIDRA. Часть 2

Это вторая часть нашей серии о реверс-инжиниринге двоичных файлов Go с помощью Ghidra. В предыдущей статье мы обсуждали, как восстановить имена функций в удаленных файлах Go и как помочь Ghidra распознавать и определять строки в этих двоичных файлах. Мы сосредоточились на двоичных файлах ELF, лишь кратко упомянув различия между PE-файлами.В этой статье будет обсуждаться новая тема - процесс извлечения информации о типе из двоичных файлов Go. Мы также более подробно объясним, как обращаться с ф…

  • воскресенье, 24 сентября 2023 г. в 00:00:17
golang
В Go меняется фундаментальная вещь — цикл

Если раньше в циклах были проблемы с замыканиями, так как переменная цикла имела скоуп всего цикла, а не одной его итерации, то в 1.22 это поведение поменяют. проще показать на примере: funcs := []func(){} for i := 0; i < 5; i++ { funcs = append(funcs, func() { fmt.Println(i) }) } funcs[0]() Последняя строка примера напечатает 5 в go 1.21, но в go 1.22 будет уже интуитивно понятный 0. С одной стороны, это нарушение обратной совместимости, но зато не надо писать пугающее новичко…

  • четверг, 21 сентября 2023 г. в 00:00:34
golang
Планирование в Go: Часть III — Конкурентность

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

  • вторник, 19 сентября 2023 г. в 00:00:20
golang
Книги для Golang-разработчиков: подборка для программистов с опытом

Привет, Хабр! Относительно недавно мы уже публиковали подборку книг по Go для начинающих разработчиков. Теперь пришёл черёд изданий для специалистов с опытом. В этой статье рассказываем о книгах для программистов, у которых уже есть опыт работы с Golang и кто готов двигаться дальше. Книги актуальные, написаны как на русском, так и на английском языке. Как всегда, просьба: если у вас есть собственные предпочтения, расскажите о них в комментариях.Язык программирования GoАвторы: Алан Донован, Бра…

  • вторник, 19 сентября 2023 г. в 00:00:19