Golang-дайджест № 12 (1 – 31 декабря 2021)
Свежая подборка новостей и материалов
Интересное в этом выпуске
Выпущены Go 1.17.5 и Go 1.16.12
Выпущен GoLand 2021.3
Доступна первая бета-версия Go 1.18 (с дженериками)
Monovania 2D платформер-головоломка, созданный с помощью Ebiten
Zinc альтернатива Elasticsearch
Map-Reduce в Go
Приятного чтения!
Новости, события
Выпущены Go 1.17.5 и Go 1.16.12 - с исправлениями безопасности, связанными с проблемой неограниченного роста памяти с HTTP/2 и с исчерпанием файловых дескрипторов.
Выпущен GoLand 2021.3 - Встроенная поддержка WSL, многочисленные исправления, новый рефакторинг, а HTTP-клиент GoLand теперь поддерживает запросы gRPC.
Замена
interface {}
наany
— не беспокойтесь об этом синтаксическом сахаре, пока не начнете работать над Go 1.18, но это псевдоним типа, о котором нужно знать, и он может сэкономить немного времени при наборе текста в будущем
Awesome
Материалы для обучения
Статьи
Более быстрое извлечение доменных имен верхнего уровня с помощью Go
Тестирование на основе свойств в Go - опишите свойства, которые вы хотите протестировать, и для вас будут созданы конкретные кейсы
Пишем приложение с использованием Go и Postgres - пошаговое руководство по продуктивной работе с системой баз данных Postgres из Go с использованием
pgx
драйвера.Когда использовать дженерики в Go? — когда вы можете и не можете использовать дженерики, а также некоторые обсуждения соответствующих вариантов использования.
Как Go рассчитывает len()? — Обзор компилятора, показывающий, что len() это не настоящий вызов функции, поэтому он должен обрабатываться по-разному для каждого типа, имеющего длину.
Несколько байтов здесь, несколько байтов там, довольно скоро вы говорите о настоящей памяти
Инструменты
Библиотека для создания интерактивных подсказок в приложениях командной строки - promptui v0.9
Библиотека обработки и управления PDF-файлами - pdfcpu v0.3.13
Библиотека изменения размера изображения с учетом содержимого - caire v1.4.1
DNS-прокси - grimd v1.1
Библиотека для вычисления расстояния между двумя географическими точками - geodist v1.0.0
Альтернатива MongoDB на базе Go - FerretDB v0.0.5
CLI-инструмент «Швейцарский армейский нож» для Kafka, RabbitMQ и других систем обмена сообщениями - plumber v1.0
Библиотека для воспроизведения звука на нескольких платформах, Windows, macOS, Android, iOS - oto v2.0.0
Cетевая библиотека событийного цикла «Она делает прямые системные вызовы epoll и kqueue, а не использует стандартный net пакет Go , и работает аналогично libuv - gnet v1.5.0
Альтернатива Elasticsearch в Go - zinc v0.1.3
Платформа Map-Reduce для Go - MapReduce v1.0.0
Быстрая база данных, построенная на модели нулевого доверия. Система базы данных с защитой от несанкционированного доступа - immudb v1.2.1
Любишь
gofmt
правила?gofmt
недостаточно строго?gofumpt
имеет еще более строгие правила - gofumpt v0.2.1Библиотека Pure Go для сетевого протокола MySQL - go-mysql v1.4.0
Библиотека для создания авторизации, использует политики Polar (DSL для политики авторизации) - oso v0.25.1
Библиотека индексации текста для Go - bleve v2.3.0
Низкоуровневый доступ к сокетам - netlink v1.5.0
Библиотека для чтения и записи файлов XLSX (Excel) - xlsx v3.2.4
2D платформер-головоломка, созданный с помощью Ebiten - monovania
Модуль для улучшения вывода консоли - pterm v0.12.33
Библиотека для создания мощных современных приложений CLI- cobra v1.3.0
Библиотека обнаружения естественного языка - lingua-go v1.0.5
Видео
Go Code Roast - рассказчик попросил Gophers предоставить ему код для «жарки», что означает, что он просматривает код, говорит, что ему нравится, а что не нравится, и будет ли он нанимать их, основываясь только на коде!
Подкасты
Mat Ryer ▶️ задал команде Go множество вопросов о многих вещах, от сборки мусора и дженериков до Go 2 и о том, как опросы сообщества влияют на их работу.