Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map. Она используется, например, в недрах компилятора Go. А ещё в некоторых пакетах его стандартной библиотеки. У неё есть много интересных свойств и, чем больше я о ней думаю, тем больше применений нахожу в своих задачах. Казалось бы, всё так хорошо, что лучше быть просто не может. Однако сегодня я расскажу вам о секретной штуке, которая будет экономить ещё больше бесценных наносекунд! Предисловие Надеюсь, у меня…
Это вторая часть нашей серии о реверс-инжиниринге двоичных файлов Go с помощью Ghidra. В предыдущей статье мы обсуждали, как восстановить имена функций в удаленных файлах Go и как помочь Ghidra распознавать и определять строки в этих двоичных файлах. Мы сосредоточились на двоичных файлах ELF, лишь кратко упомянув различия между PE-файлами.В этой статье будет обсуждаться новая тема - процесс извлечения информации о типе из двоичных файлов 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. С одной стороны, это нарушение обратной совместимости, но зато не надо писать пугающее новичко…
Это третья статья из серии, состоящей из трёх частей, в которой мы рассмотрим механику и семантику планировщика в Go. Эта статья посвящена посвящено конкурентности.ВведениеКогда я решаю какую-либо проблему, особенно если это новая проблема, я изначально не задумываюсь о том, подходит ли мне конкурентность или нет. Сначала я ищу последовательное решение и убеждаюсь, что оно работает. Затем, после проверки читабельности и технических характеристик, я начинаю задавать вопрос о целесообразности и …
Привет, Хабр! Относительно недавно мы уже публиковали подборку книг по Go для начинающих разработчиков. Теперь пришёл черёд изданий для специалистов с опытом. В этой статье рассказываем о книгах для программистов, у которых уже есть опыт работы с Golang и кто готов двигаться дальше. Книги актуальные, написаны как на русском, так и на английском языке. Как всегда, просьба: если у вас есть собственные предпочтения, расскажите о них в комментариях.Язык программирования GoАвторы: Алан Донован, Бра…
Это полное изложение замечательного доклада Роба Пайка "Concurrency is Not Parallelism". Иллюстрации и диаграммы воссозданы, исходный код взят дословно со слайдов, за исключением комментариев, которые в некоторых местах были расширены.ВведениеМир параллелен: начиная с основ вычислительной техники, таких как многоядерные процессоры, и заканчивая реальными объектами, людьми, планетами и Вселенной в целом - всё происходит одновременно. Однако имеющиеся у нас вычислительные средства не оче…
В этой статье мы рассмотрим, как дебажить программы, написанные на Golang, с помощью Delve. Delve — это сторонний отладчик для Go, скачать на github по ссылке. Это хорошая альтернатива отладчику GDB golang, так как Delve куда больше возможностей для работы. Delve лучше, чем GDB, понимает среду выполнения Go, структуры данных и выражения. В настоящее время Delve поддерживает Linux, OSX и Windows в версии amd64. Наиболее актуальный список поддерживаемых платформ приведен в документации Delve.Вы…
Всем привет! Я – Влад, руководитель группы поисковой оптимизации в Ozon. Go повсюду. И, конечно, ни при каких обстоятельствах мы не могли пройти мимо него в самом крупном направлении компании – разработке маркетплейса.Направление отвечает за разработку инструментов, которыми активно пользуются наши покупатели и продавцы. Сюда входит абсолютно всё, что нужно для того, чтобы продавец смог предложить товар или услугу, а покупатель — сделать заказ.И нам есть чем поделиться. Приглашаем на открытый…
Привет, Хаброжители! Язык Go — это простой и понятный язык для создания высокопроизводительных систем будущего. Используйте Go в реальных производственных системах. В новое издание включены такие темы, как создание серверов и клиентов RESTful, знакомство с дженериками Go и разработка серверов и клиентов gRPC. Третье издание «Golang для профи» исследует практические возможности Go и описывает такие продвинутые темы, как параллелизм и работа сборщика мусора Go, использование Go с Docker, разр…