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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🏃 Самоучитель по Go для начинающих. Часть 6. Функции и аргументы. Области видимости. Рекурсия. Defer

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

👉 Читать статью
👉 Часть 1
👉 Часть 2
👉 Часть 3
👉 Часть 4
👉 Часть 5
👍14🥱71🤔1
😂 Анонимная сеть Hidden Lake на практике

Hidden Lake — по умолчанию F2F (friend-to-friend) сеть, где каждый пользователь устанавливает доверенных участников, с которыми впоследствии будет связываться и которые смогут отправлять ему сообщения.

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

Это все понятно и хочется практики? Автор демонстрирует пример файлообменника на основе сети Hidden Lake, разработанный на Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤔8👏1
🧰 memos — опенсорсный self-hosting инструмент для заметок, ориентированный на конфиденциальность. Под капотом используется Go + Echo + SQLite и TypeScript.

📌 GitHub & Сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
21
🤩 Пополняемый плейлист с докладами на конференции GopherCon 2023:

🌐 Обзор изменений в Go, Russ Cox
🌐 Будущее JSON в Go, Joe Tsai
🌐 Постулаты, которые помогут преодолеть синдром самозванца, Kate Pond: переосмысление постулатов Go, представленных Робом Пайком в 2015 году

#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
👨‍🎓 Опытные разработчики часто дают совет начинающим: «Лучший способ стать лучше в любом языке программирования — писать больше кода и как можно больше практиковаться».

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

📌 Вот несколько случайных проектов, с которых можно начать:

🔧 xbar — позволяет поместить выходные данные любого скрипта/программы в строку меню macOS
🔧 service — стартовый набор для написания сервисов на Go с использованием Kubernetes
🔧 Bubble Tea — мощный легковесный TUI-фреймворк
🔧 GoBoy — эмулятор Nintendo GameBoy и GameBoy Color, написанный на go
🔥11
This media is not supported in your browser
VIEW IN TELEGRAM
🛠 Baby API — простой Go CRUD API фреймворк. Вы можете использовать его для кастомной обработки запросов/ответов с помощью реализованных Renderer и Binder из go-chi/render.

Используйте предоставленные функции расширения для добавления дополнительных функций API: OnCreateOrUpdate, Storage, AddCustomRoute, Patch и многие другие.

package main

import "github.com/calvinmclean/babyapi"

type TODO struct {
babyapi.DefaultResource

Title string
Description string
Completed bool
}

func main() {
api := babyapi.NewAPI[*TODO](
"TODOs", "/todos",
func() *TODO { return &TODO{} },
)
api.RunCLI()
}


Чтобы показать фреймворк в действии, автор написал простой веб-проект с помощью HTMX и Go. Все подробности — под катом.

👉 Читать
👍11
This media is not supported in your browser
VIEW IN TELEGRAM
😳🧰 Апгрейд нод Kubernetes без простоев продакшена

#жиза
Please open Telegram to view this post
VIEW IN TELEGRAM
😁60🔥8👾2👍1
👨‍💻 Решение задач с Advent of Code 2023 на Go от голландского разраба
Danny van Kooten

📌 Что внутри:

Решения каждой задачи, начиная с первого дня
Комментарии к коду, объясняющие решения и подходы автора
Тесты и бенчмарки для оценки производительности

👉 GitHub
🔥20👏62👍2🤔1
🕹 Вам интересна тема геймдева на Go?

🔥Искандер Шарипов начал серию статей о разработке RPG на основе движка Ebitengine:

👉 Часть 0. Знакомство с Ebitengine
👉 Часть 0.5. Доработка структуры игры и перевод на сцены + разработка отдельного демо-проекта

#геймдев
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥6🤔1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🏔 Эпикфейл: карьера катится к чертям

🤦‍♂️ У всех нас случались провалы в карьере, о которых не хочется распространяться. Неловкий момент на собеседовании, провал проекта из-за глупой ошибки, конфликт с начальством — такие ситуации хочется поскорее забыть. Однако часто именно они дают нам самые ценные уроки и закаляют как профессионалов.

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

👉 Поделиться историей
🌚6👍3
🤔 Type assertion vs. type switches в Go

Хотя автор статьи работал Go-разрабом, некоторая путаница в этих понятиях у него осталась, поэтому он решил разобраться более подробно. Читайте о различиях на практике👇

🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🚀🏢 Стартапы vs IT-гиганты: куда лучше устроиться Junior-разработчику

Представим ситуацию: вы начинающий разработчик с очень востребованным стеком (да, звучит как фантастика, но допустим). И так уж сложилось, что перед вами стоит выбор: пойти работать в стартап или крупную компанию. Причем предлагаемые условия абсолютно идентичны и там, и там.

Что же делать в такой ситуации?

👉 Разбираемся в статье
🔗 Зеркало
🔥21
🤦‍♂️ Есть такое слово «надо», которое отравляет многим жизнь. Надо получить вышку, надо жениться до стольких-то лет и родить детей до стольких-то, надо зарабатывать столько-то и еще много-много «надо».

❤️ Как с этим жить? Попробуйте вместо «надо» поставить «полезно». И если бесполезно — то не надо!

💬 А какое слово отравляет вашу жизнь? Поделитесь в комментариях 👇
🥱19❤‍🔥4👍4🌚1
💬 Какие существуют распространенные паттерны конкурентности в Go?

Паттерны конкурентности в Go обычно строятся вокруг горутин и каналов.

Вот несколько основных паттернов конкурентности, которые широко используются в Go:

🔸 Worker pools: подразумевает создание нескольких горутин (воркеров) для выполнения задач из очереди.

🔸 Fan-in (собирает данные из множества источников) и Fan-out (распределяет задачи между несколькими обработчиками).

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

🔸 Publish/Subscribe: создание механизма, в котором одни горутины (издатели) публикуют сообщения в канал, а другие горутины (подписчики) читают эти сообщения.

🔸 Context passing: использование пакета context для управления жизненным циклом и отмены горутин. Это особенно полезно в сетевых приложениях и при выполнении запросов к базам данных.

🔸 Errgroup: использование пакета errgroup для параллельного выполнения задач с возможностью обработки ошибок и отмены всех задач при возникновении первой ошибки.

🔸 Select statement: использование оператора select для ожидания нескольких операций с каналами. select позволяет горутине ожидать несколько коммуникационных операций, блокируясь до готовности одной из них.

👉 Подробнее: доклад Go Concurrency Patterns Роба Пайка (слайды) и Advanced Go Concurrency Patterns (слайды) Sameer Ajmani
29👍14🔥2👏1
🥳 Выпущена версия Go 1.22.0!

📌 Мини-обзор изменений и новых возможностей:

1️⃣ Изменения в языке:

☑️ Изменения в поведении переменных в циклах for. Теперь каждая итерация цикла создает новые переменные, чтобы избежать ошибок совместного использования.
☑️ Циклы for теперь могут итерировать по целым числам.

2️⃣ Команда go:

☑️ В workspaces теперь можно использовать директорию vendor с зависимостями.
☑️ Команда go get больше не поддерживается в режиме GOPATH.
☑️ Изменения в go mod init и go test -cover.

3️⃣ Обновлен веб-интерфейс инструмента trace.

4️⃣ Инструмент vet:

☑️ Изменения в поведении vet в соответствии с новой семантикой переменных цикла.
☑️ Новые предупреждения для append и другие.

5️⃣ Рантайм: улучшения производительности и снижение использования памяти.

6️⃣ Компилятор: улучшения в Profile-guided Optimization (PGO) и другие оптимизации.

7️⃣ Linker: изменения в флагах -s/-w и другие улучшения.

8️⃣ Bootstrap: требуется последний релиз Go 1.20 или более новый для bootstrap.

9️⃣ Основная библиотека:

☑️ Новый пакет math/rand/v2.
☑️ Новый пакет go/version.
☑️ Улучшенные шаблоны роутинга в HTTP и многое другое.

🗒️ Примечания к выпуску
📦 Скачать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥111🌚1