Библиотека Go-разработчика | Golang
23.3K subscribers
2.08K 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
🔥 Только топовые и интересные доклады в нашей подборке:

🌐 NATS.io: Beyond hello world / David Gee
🌐 An Intro to Pocketbase / Haseeb Majid
🌐 How to Rewrite a Service / Michal Bock
🌐 OpenTelemetry with AWS / Luke Stoward
🌐 A Purist's Guide to Type-Driven Design in Go / Angus Morrison
🌐 Go and Rust: Together at Last / Barnaby Keene
🌐 Go + CUE - A Match Made In Heaven! / Paul Jolly
🌐 Bundling Tasks with Taskfile / Talha Altinel
🌐 Featherweight Go / Raymond Hu, Julien Lange, Bernardo Toninho
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Интенсив «Архитектуры и шаблоны проектирования» для middle и senior-разработчиков

Проверьте свои знания, ответив на 8 вопросов – https://proglib.io/w/68a66cf6

🧐 Кому подойдет?

Разработчикам, которые знают любой объектно-ориентированный язык программирования.

🧐 Как проходит обучение?

В течение всего интенсива вы будете создавать игру «Звездные войны». У вас будет собственный корабль, который научится летать по полю битвы, стрелять основным оружием и применять секретное оружие.

👉 Подробная программа обучения

👉 Купить со скидкой 30%

Промокод MIDDLE действует до 25 октября
🌚2🔥1
💪Популярный Go-ютубер Anthony GG делится своим подходом к структурированию проектов на Go.

📺 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱34👍8😁3
🚀System Design 101

Готовитесь к собеседованию по проектированию систем или просто хотите понять принцип работы сложных систем? Тогда репозиторий ByteByteGo точно для вас.

👉 GitHub
🔥214👍3
👩‍💻 Lip Gloss — Go-проект от авторов популярных CLI-инструментов (bubbletea, gum, mods, charm и др.), который представляет из себя что-то вроде CSS для стилизации макетов терминала.

🤩Недавно, кстати, была выпущена версия 0.9.0, которая добавляет возможность рендеринга таблиц. Анонс нового выпуска и примеры использования нового функционала ищите на GitHub-странице проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30
This media is not supported in your browser
VIEW IN TELEGRAM
⚒️Templ — язык HTML-шаблонов для Go с отличными инструментами для разработчиков.

Инструмент позволяет создавать компоненты, которые отображают фрагменты HTML и компонуют их для создания экранов, страниц, документов и приложений.

📌Под капотом:

• Рендеринг на стороне сервера: можно развернуть как бессерверную функцию, Docker-контейнер или стандартную программу Go.
• Статический рендеринг: создавайте статические HTML-файлы для деплоя по вашему выбору.
• Скомпилированный код: компоненты компилируются в код Go.
• Использование Go: вызовите любой код Go и используйте стандартные операторы if, switch и for.
• Не требует использования клиентского или серверного JavaScript.
• Поставляется с автодополнением IDE.

templ Hello(name string) {
<div>Hello, { name }</div>
}

templ Greeting(person Person) {
<div class="greeting">
@Hello(person.Name)
</div>
}

🎙Кстати, инструмент среди прочих недавно обсудили в подкасте «РАДИО-Т» (00:26:52-00:50:36).
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍5🌚1
📊 Эффективная работа с JSON в Go

В статье рассматриваются основные подходы для работы с JSON в языке Go. Большое внимание уделено определениям из документации, а также конкретным примерам.

🔗 Читать статью
🔗 Зеркало
🔥9
При развертывании приложений в продакшене сборка двоичных файлов с информацией о версии и другими метаданными помогает улучшить процессы мониторинга, регистрации данных и отладки за счет добавления идентификационной информации для отслеживания версий сборок.

Поскольку эти значения постоянно меняются, внесение этих данных в исходный код и их изменение при каждой сборке становится непростой задачей, где могут возникнуть ошибки.

В Go эту проблему можно решить с помощью опции -ldflags команды go build. Флаг -ldflags в Go используется для передачи определенных инструкций компоновщику (linker) во время сборки программы.

Этот флаг предоставляет возможность изменять поведение компоновщика и управлять различными аспектами процесса сборки. Вот некоторые примеры того, как может быть использован флаг -ldflags:

1️⃣Установка значений переменных во время компиляции: можно использовать флаг для установки значений переменных во время компиляции, что может быть полезно для внедрения информации о версии, времени сборки или других метаданных в исполняемый файл.

$ go build -ldflags "-X main.version=1.0.0"

2️⃣Оптимизация размера бинарного файла: флаг может быть использован для удаления информации об отладке и символов таблицы, что может значительно уменьшить размер исполняемого файла.

$ go build -ldflags "-s -w"

3️⃣Изменение поведения компоновщика: можно также изменять другие параметры компоновщика, например, задавать кастомный файл запуска или изменять поведение компоновщика по умолчанию.

$ go build -ldflags "-extldflags '-static'"

4️⃣Изменение имени выходного файла: флаг может быть использован для задания кастомного имени выходного файла во время компиляции.

$ go build -ldflags "-o custom_name"

👉 Подробнее

#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍62
🖼️ Постоянное обновление, или Как сохранить авторизацию API-клиента

Конкурентный доступ к переменной? Вам нужен mutex! Или оператор sync/atomic, если он подходит для вашего юзкейса. Хотя и он на самом деле не нужен. Оператор select — это элегантная альтернатива.

Christoph Berger раскрывает проблему поддержания актуальности токена доступа в веб-приложениях, когда множество клиентских сессий требует непрерывного потока данных от API.

Основное внимание уделяется методу dynamic futures в Go, который позволяет инициализировать и обновлять токен доступа из централизованного места, делая его доступным для многочисленных клиентских сессий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍41
🧰 Команда Git представила Go-проект trace2receiver, который представляет собой компонент trace receiver для демона Custom Collector OpenTelemetry. Он получает телеметрию Git Trace2 от локальных команд Git, преобразует ее в формат OpenTelemetry и пересылает другим компонентам OpenTelemetry.

Этот компонент полезен, если вы хотите собрать данные о производительности команд Git, агрегировать данные от нескольких пользователей для создания панелей мониторинга производительности, построить распределенные трассировки вложенных команд Git или понять, как размер и форма ваших репозиториев Git влияют на производительность команд.

👉 GitHub
4🔥1
Zero-Configuration Environment Variables: как настроить переменные окружения по умолчанию с помощью стандартной библиотеки.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍4
🌃🧰 GoCity — инструмент для визуализации исходного кода Go в виде зданий города.

Он может дать лучшее представление о том, как вы структурировали код, либо вы можете просто использовать его по фану. Здесь можно увидеть примеры для:

🔸sirupsen/logrus
🔸gin-gonic/gin
🔸spf13/cobra
🔸gohugoio/hugo

👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🥱6🌚4👏3
🛠Разработка движка регулярных выражений с нуля: пошаговый гайд для Go-разработчика

Хотя вам, вероятно, не нужна еще одна библиотека регулярных выражений, здесь автор проводит по каждому этапу разработки и объясняет с помощью простых иллюстраций.

• Parsing
• Building the state machine
• Matching

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
🗿Подводные камни, с которыми сталкиваются новички в Go: серия статей от одного из разработчиков go-mysql-server (Dolt)

🔹Часть 1. Как избежать ловушек в Go: простые примеры
🔹Часть 2. Размышления о nil в Go
🔹Часть 3. Размышления о срезах в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
🧰 Carbon — простой семантический пакет Go с большим количеством функций, упрощающих и ускоряющих создание, анализ и сравнение даты и времени.

👉 GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155
💬Для чего в Go используются синтаксическая конструкция ‘…’?

📌Синтаксическая конструкция ‘…’ в Go используется в нескольких контекстах, в частности для:

1️⃣Определения функции с переменным количеством аргументов (вариативная функция). Она позволяет функции принимать неопределенное количество аргументов одного типа. Например:

func sum(nums ...int) int {
total := 0
for _, num := range nums {
total += num
}
return total
}


2️⃣Передачи элементов среза как отдельных аргументов функции:

nums := []int{1, 2, 3, 4}
sum(nums...)


3️⃣Определения массивов неизвестной заранее длины:

x := [...]int{1, 2, 3} // Здесь Go определит длину массива на основе количества элементов
👍52🥱7
🤔Критика по поводу обработки ошибок в Go распространена, но какие есть решения? Их гораздо меньше.

🤯Автор предлагает синтаксис (на скрине), который можно расширить до типичного подхода if err != nil с помощью (весьма экспериментального) инструмента Bango.

🗣Ожидаемо, что на Hacker News эта статья привела к холивару, в котором мнения варьировались от «Мне нравится, как Go это делает» до «Вместо этого используйте Rust».
🤔15😁7🌚32🥱2
💬Радио в терминале, и все это на Go? Встречайте: RadioGoGo.

☑️Инструмент сочетает в себе элегантность TUI BubbleTea с широкими возможностями API RadioBrowser. Основные особенности:

🎤Изящный и интуитивно понятный TUI
🎤Возможность поиска, просмотра и прослушивания радиостанции из обширной глобальной базы данных
🎤Интегрированное воспроизведение с использованием ffplay и многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥92🤔2