
Новости, события
-
-
Улучшения компилятора, дающие прирост производительности ~ 5%
-
64-битная поддержка ARM в Windows.
-
-
если модуль указывает go 1.17 или выше, граф модулей включает только непосредственные зависимости других модулей go 1.17, но не их полные транзитивные зависимости.
-
-
unsafe.Add
-
unsafe.Add(ptr, len) добавляет len к ptr и возвращает обновленный указатель unsafe.Pointer(uintptr(ptr) + uintptr(len)).
-
-
Преобразования из среза в указатель на массив
-
выражение s типа []T теперь может быть преобразовано в тип указателя массива *[N]T. Если a является результатом такого преобразования, то соответствующие индексы, находящиеся в диапазоне, относятся к одним и тем же базовым элементам: &a[i] == &s[i] для 0 <= i < N. Преобразование вызывает панику, если len(s) меньше N.
-
-
unsafe.Slice
-
для выражения ptr типа *T, unsafe.Slice(ptr, len) возвращает срез типа []T, базовый массив которого начинается с ptr, а длина и емкость равны len.
-
-
Комментарии к устаревшим модулям
-
Авторы модуля могут объявить модуль устаревшим, добавив комментарий // Deprecated: в go.mod, а затем пометив новую версию. go get теперь выводит предупреждение, если модуль, необходимый для сборки пакетов, указанных в командной строке, устарел. go list -m -u печатает устаревшие для всех зависимостей (используйте -f или -json, чтобы показать полное сообщение). Команда go считает разные основные версии отдельными модулями, поэтому этот механизм можно использовать, например, для предоставления пользователям инструкций по миграции для новой основной версии.
-
-
go get
-
Флаг go get -insecure устарел и был удален. Чтобы разрешить использование небезопасных схем при получении зависимостей, используйте переменную среды GOINSECURE. Флаг -insecure также обходит проверку суммы модуля, используйте GOPRIVATE или GONOSUMDB, если вам нужна эта функция.
-
go get выводит предупреждение об устаревании при установке команд вне основного модуля (без флага -d). go install cmd@version следует использовать вместо этого для установки команды определенной версии, используя суффикс типа @latest или @v1.2.3. В Go 1.18 всегда будет включен флаг -d, а go get будет использоваться только для изменения зависимостей в go.mod.
-
-
Cgo
-
Пакет runtime/cgo теперь предоставляет новую возможность, которая позволяет преобразовывать любые значения Go в безопасное представление, которое можно использовать для безопасной передачи значений между C и Go (runtime/cgo.Handle).
-
-
TLS строгий ALPN
-
Когда установлен Config.NextProtos, серверы теперь обеспечивают перекрытие между настроенными протоколами и протоколами ALPN, объявленными клиентом, если таковые имеются. Если нет взаимно поддерживаемого протокола, соединение закрывается с предупреждением no_application_protocol, как того требует RFC 7301. Это помогает смягчить межпротокольную атаку ALPACA.
-
В качестве исключения, когда значение «h2» включено в файл Config.NextProtos сервера, клиентам HTTP/1.1 будет разрешено подключаться, как если бы они не поддерживали ALPN.
-
-
gofmt
-
gofmt (и go fmt) теперь синхронизирует строки //go:build со строками // +build. Если файл содержит только строки // +build, они будут перемещены в соответствующее место в файле, и будут добавлены соответствующие строки //go:build. В противном случае строки // +build будут перезаписаны на основе любых существующих строк //go:build.
-
-
go run
-
go run теперь принимает аргументы с суффиксами версии (например, go run example.com/cmd@v1.0.0). Это приводит к тому, что go run создает и запускает пакеты в режиме с поддержкой модулей, игнорируя файл go.mod в текущем каталоге или любом родительском каталоге, если он есть. Это полезно для запуска исполняемых файлов без их установки или без изменения зависимостей текущего модуля.
-
-
vendor
-
Если в основном модуле указано go 1.17 или выше, go mod vendor теперь аннотирует vendor/modules.txt версией go, указанную каждым поставляемым модулем, в его собственном файле go.mod. Аннотированная версия используется при сборке пакетов модуля из исходного кода поставщика.
-
Если основной модуль указывает go 1.17 или выше, go mod vendor теперь не включает файлы go.mod и go.sum для зависимостей поставщика, которые в противном случае могут помешать команде go определить правильный корень модуля при вызове в дереве поставщиков.
-
-
Выпущена Gitea v1.15.0 популярной системы git forge
-
Amazon представила MemoryDB для Redis , управляемую службу, совместимую с Redis, предназначенную для первичного использования баз данных.
Awesome
Материалы для обучения
Статьи
-
Устранение распространенных проблем с CORS и JavaScript (в Go REST API)
-
map[string]interface{} — статья про не типизированную карту
-
Go 1.17 очень хорошо работает с C # в старой доброй игре Computer Language Benchmarks Game
-
Недостаточная полезность sync.Once — фантастический пример того, почему вы можете использовать это для очистки кода
-
Создавайте масштабируемые приложения с помощью AWS Lambda — прямой обзор того, как и почему следует рассматривать бессерверный подход для приложений Go.
-
Brooks, Wirth and Go — отличная статья о двух гигантах в индустрии программного обеспечения
-
Как моделировать данные JSON в приложении с помощью CockroachDB
-
Напишите инструмент статического анализа кода для определения состояния гонки
-
Опыт применения GitHub Actions для создания CI/CD с бесплатным хостингом на Heroku
-
GoLand 2021.2: Улучшенная поддержка Go-модулей, новые возможности запуска gofmt, поддержка Go 1.17
-
Как сделать конфигурационные файлы версионируемыми с инструментами Kubernetes
-
Real-time мониторинг тормозящих запросов PostgreSQL своими руками за полчаса
-
История платформы Highload.Fun для соревнований в оптимизации кода
-
Функциональные опции в Go: реализация шаблона опций в Golang
Инструменты
-
Entity Framework — Ent v0.9.0
-
Библиотека проверка безопасности Golang — gosec v2.8.1
-
Библиотека для конфигурации на основе графов — virgo v0.0.1
-
Библиотека для генерации кодов TOTP / HOTP — otpgen v1.0.0
-
Расширенная поддержка стилей и цветов ANSI для терминальных приложений — termenv v0.9.0
-
Инструмент для переноса C в Go — cxgo v0.3.0
-
Библиотека cloudflare api — cloudflare-go v0.21.0
-
Утилита маршрутизации MIDI с расширенным интерфейсом OSC — Pigiron
-
Инструмент для обновления структур данных из командной строки — dasel v1.20.0
-
Инструмент для преобразования данных, моделирования данных, конвейеров и управления качеством данных — optimus v0.0.2
-
Инструмент для передачи файлов с одного компьютера на другой — croc v9.3.0
-
Библиотека индексирования текста — Bleve v2.1.0
-
Инструмент генерирует безопасный тип Go из SQL — sqlc v1.9.0
-
Почтовый сервер SMTP — Maddy v0.5.0
-
Реализация Go gRPC (HTTP / 2-based RPC) — grpc-go v1.40.0
-
Клиент для GitHub API v3 — go-github v38.1.0
-
Комплексная аутентификация для веб-проектов Go authboss v3.2.0
-
Библиотека Premier ACME — Acmez v1.0
-
Крошечная реализация Git — ReGit
-
Сервер аутентификации LDAP — GLAuth v2.0
-
Официальный клиент GitHub CLI — GitHub CLI v2.0
-
Распределенная база данных, построенная на SQLite — rqlite v6.2.0
-
API клиент Spotify — Spotify v2.0
-
Инструмент слайд-шоу на основе терминала — slides v0.5.0
-
Фреймворк распределенных систем — micro v3.6.0
-
Клиент для PostgreSQL, MySQL и SQLite — bun v1.0.0
-
HTTP-маршрутизатор — treemux v0.7.3
-
Фреймворк для тестирования — testza v0.2.7
-
Библиотека кодирования base64 — base64 v0.1.2
-
Платформа для создания и управления сетями — netmaker v0.7.3
-
OpenID Connect (OIDC) HTTP Middleware — go-oidc-middleware v0.0.11
Подкасты
Сообщества
Вопросы по языку на русскоязычном StackOverflow
Канал в telegram (GolangStack)

ссылка на оригинал статьи https://habr.com/ru/articles/575814/
Добавить комментарий