Библиотека Go-разработчика | Golang
23.3K subscribers
2.07K photos
42 videos
87 files
4.45K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🧰 Pygolo — инструмент для расширения Python с помощью Go и наоборот. Он представляет собой новый способ встраивания или расширения интерпретатора Python с помощью Go.

Pygolo делает большую часть тяжелой работы, заботясь о типах, модулях, исключениях и многом другом. Начните работу с инструментом с руководства.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁32🥱1
📌 Подборка докладов на тему Go с недавних митапов:

📺 Evrone Golang митап
🔸Тестовое окружение на фикстурах (библиотека для Go), Тимофей Кулин / Яндекс (YDB)
🔸Архитектура Go проекта на практике, Тигран Ханагян / HungerStation Delivery Hero
🔸Эффективно используем Go в команде, Геннадий Ковалев / YADRO
🔸Ruby on Rails vs GoLang, Александр Елистратов / BGaming

📺 YADRO Go To митап
🔸Переходим на Go с других языков: парадигмы, удобство и неудобства технологии, Евгений Соколов / YADRO
🔸Какие инструменты Go помогают писать хороший (сопровождаемый) код, Геннадий Ковалёв / YADRO
🔸Лайфхаки для кода без побочных эффектов: пишем на Go и красиво, и правильно, Влад Белогрудов / YADRO
🔥16👍41
💭 Недавно мы спрашивали вас о том, какие самые глупые вопросы вам задавали на собеседованиях? 🤦‍♂️

Вдогонку к теме собесов: поделитесь топом самых крутых вопросов с собеседований, которые вам запомнились👇

#холивар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Корутины для Go

Рассуждения Расса Кокса о том, зачем нам нужен пакет корутин для Go и как он будет выглядеть. Но сначала разберемся, что вообще такое корутины на практике👇

Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔19👍41
В отличие от большинства языков, в Go нет синтаксиса для обработки ошибок try/catch/finally. А как тогда обрабатывать ошибки?


В Go реализован минималистичный подход, подразумевающий проверку ошибок в местах их появления и исключающий их возникновение в других функциях на протяжении цепочки вызовов.

Для этого в Go используется встроенный тип ошибок, который определяется через объявление interface 🔽

type error interface {
    Error() string
}

📌
Это означает, что вы можете использовать в качестве error любой тип данных, который реализует метод Error(), возвращающий значение string.


#вопросы_для_самопроверки
🥱25👍74🥰1
Анализ времени сборки Go

Компилятор Go довольно быстр, но автору статьи было любопытно, какие факторы влияют на время компиляции.

В статье он использовал 350 000 строк проекта Istio, чтобы протестировать Go, опробовать некоторые идеи и, в конце концов, дал несколько советов.

Читать
🔥76👍1
💭 Как в вашей компании/команде организовано тестирование проектов? Есть ли отдельная команда QA, или все ложится на плечи разрабов? Применяете ли вы подход «Разработка через тестирование» (test-driven development, TDD)?

#холивар
6
Проект Gorilla официально выведен из статуса «в архиве» и будет поддерживаться разработчиками из Red Hat. Естественно, основные мейнтейнеры ждут участия других разработчиков.

Подробнее
🔥75👍155🤔4🎉4
Как построить систему, способную выдерживать нагрузку в 5 млн rps

Владимир Олохтонов, руководитель команды разработки в отделе Message Bus (часть платформы Ozon), делится опытом построения линейно масштабируемой gRPC-прокси перед Kafka. Она способна обслуживать миллионы запросов в секунду и написана на Go.

Читать
👍125🤔1
📌 Подборка для Go-разработчика:

🤔 proposal: spec: add untyped builtin zero
🤔 Обоснование использования корутин в Go
Go 1.21 Release Candidate 3
Пробуждение проекта Gorilla
🔸 Релиз Govulncheck 1.0.0
🔸 Релиз ntp 1.2 — простой клиентский ntp-пакет для Go
🔸 Релиз Sarama 1.40 — библиотека Go для Apache Kafka, которая переходит в бразды правления IBM
🔸 Релиз Go Rate Limiter 0.3 — возвращение в разработку после паузы в пару лет с более эффективной внутренней реализацией и без каких-либо внешних изменений

#news
10👍10
Как написать модель базы данных: разбор пяти различных подходов для Go-разработчика

✔️Стандартную библиотеку
✔️Struct mapper
✔️SQL builder на примере squirrel
✔️sqlc
✔️ORM

Читать
👍185
🔧 📩 pop — CLI-инструмент для отправки электронных писем из вашего терминала. Команда Charm имеют заслуженную репутацию разработчиков полезных инструментов и библиотек на базе Go, и pop, похоже, не является исключением.

Репозиторий
👍65🔥1
Десять лет назад Carl M. Johnson написал статью под названием “Go: The Good, the Bad, and the Meh”. Пришло время пересмотреть эту статью и разобраться, что по-прежнему остается верным, что изменилось, чего не хватало и что было (или превратилось в ошибку) неправильным.

Читать
5👏2
Серия практических статей о том, как слайс работает под капотом, — что-то вроде материала Роба Пайка о слайсах в блоге Go.

1️⃣ Build your own slice: Arrays and slices
2️⃣ Build your own slice: Append and Copy
6👍2
Вышла третья часть в серии статей «Безопасность цепочки поставок» о конкретных методах, с помощью которых Go помогает вам доверять целостности используемых пакетов.

Вы узнаете о двух функциях, представляющих особый интерес для безопасности цепочки поставок: расширение Go для Visual Studio Code и встроенное фаззинг-тестирование.

#security
7👏2
Эксперимент ccgo/v4: пробуем runtime.Pinner

В Go 1.21 пакет runtime включает новый тип Pinner, который можно использовать для освобождения объектов Go сборщиком мусора. Автор ccgo уже интегрировал Pinner в инструмент, а в статье он оценивает возможное влияние новой фичи на производительность👇

Читать
8🤔3👍1
📌 Подборка для Go-разработчика:

🤔 Proposal: Let's Make Go's HTTP Request Multiplexer Better.
🔸 Релиз ff 3.4: пакет «flags-first» для конфигурации.
🔸 Релиз go-sse 0.6: облегченная, полностью соответствующая спецификациям HTML5 библиотека server-sent events.
🔸 Релиз pdfcpu 0.4.2: библиотека для обработки PDF, написанная на Go и поддерживающая шифрование.
🔸 Релиз go-git 5.8: расширяемая реализация Git на чистом Go.
🔸 Релиз GoToSocial 0.10.0: сервер социальной сети ActivityPub, написанный на Go.
🔸 Релиз Fiber 2.48.0: веб-фреймворк, вдохновленный Express и построенный на основе Fasthttp.
🔸 Релиз Micro 4.3.0: платформа для облачной разработки.
🔸 Релиз Dive 0.11: инструмент для изучения Docker-образа, содержимого слоев и поиска способов уменьшения размер образа Docker/OCI.

#news
👍10
Старый пример, не дающий интернету покоя. Проверим, как у вас с математикой?
🥱4👍2
Размер типа структуры без полей ненулевого размера равен нулю. Размер типа массива, длина которого равна нулю или размер элемента которого равен нулю, также равен нулю. Это можно доказать с помощью примера выше.

В Go размеры часто обозначаются как значения int. Это означает, что максимально возможная длина массива равна MaxInt, значение которой равно 2^63-1 в 64-битных ОС. Однако длина массивов с ненулевыми размерами элементов жестко ограничена стандартным компилятором Go и рантаймом.

📌 Например👇

var x [1<<63-1]struct{} // okay
var y [2000000000+1]byte // compilation error
var z = make([]byte, 1<<49) // panic: runtime error: makeslice: len out of range


#tip #go #beginner
👍13