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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🏎️ 🎮 Golang на PSP: как язык программирования вышел за пределы серверов!

Что общего между языком Go и портативной консолью PlayStation Portable? На первый взгляд, ничего. Но один разработчик нашёл способ запускать программы на Go на этой культовой консоли! 🚀

💡 Как это возможно?
⚙️ WebAssembly и TinyGo: код на Go компилируется в WebAssembly (WASM) с помощью компилятора TinyGo.
⚙️ Инструменты: WASM преобразуется в C-код с помощью w2c2, а для графики используется библиотека raylib, портированная для PSP.

Зачем это нужно?
📌 Исследование возможностей Go в новых средах.
📌 Вдохновение для ретро-разработчиков и экспериментов с устаревшими устройствами.
📌 Простое хобби для фанатов PSP!

🛠️ Хотите попробовать? Прочитайте статью! Это отличный способ погрузиться в эксперименты с Go и WebAssembly.
🎉20👍71
🎯 Мини-статья о мьютексе в Go

В статье Линк Мэтью рассказывает, как управлять доступом к общим ресурсам в многопоточности с помощью мьютексов.

Мьютекс (mutual exclusion) гарантирует, что только одна горутина работает с разделяемым ресурсом в каждый момент времени.

В статье наглядно показано:
Что такое мьютекс и как он работает;
Простой пример использования sync.Mutex в Go.
👍121🥱1
🐌 Читаемость важнее скорости: зачем писать «медленный» код на Go?

Когда речь заходит о написании кода на Go, многие стремятся к максимальной производительности. Но действительно ли это всегда нужно? Джон Арундел из Bitfield Consulting утверждает обратное: в большинстве случаев читаемость кода важнее его скорости.

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

Когда оптимизация важна?
Конечно, есть исключения — например, игры, высоконагруженные серверы или системное программное обеспечение, где каждый микросекундный прирост имеет значение. Но в остальных случаях следует отдавать предпочтение читаемости.

Как писать понятный код:
Используйте понятные имена переменных и функций.
Разбивайте сложные функции на простые и логически завершенные.
Документируйте свои решения и используйте комментарии там, где это оправдано.
Не бойтесь жертвовать "чуть-чуть большей производительностью" ради ясности.

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍83🤔1
💻📈 Итоги года Proglib: 2024 год в цифрах и достижениях

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

Итоги года — это не только цифры, но и история роста сообщества, частью которого можете стать и вы!
4👍2
🌍✈️ 6 идей, как ускорить поиск работы за рубежом

Статья для тех, кто устал от отказов и безрезультатных поисков. Узнайте секреты, которые помогут вам найти работу за рубежом в разы быстрее!

👉 Читать статью
👍2🌚1
Как проверить, пуст ли интерфейс (interface{}) в Go?

В Go интерфейс считается пустым, только если оба его компонента (динамическое значение и тип) равны nil. Однако есть нюансы, о которых стоит знать.

1️⃣ Прямая проверка с == nil
Если интерфейс действительно пустой (значение и тип nil), проверка if myInterface == nil вернет true.
var i interface{}
if i == nil {
fmt.Println("Интерфейс пустой")
}


2️⃣ Проблема с nil и типом
Если интерфейс содержит nil с типом (например, *int), он не будет считаться пустым.
var i interface{} = (*int)(nil)
if i == nil {
fmt.Println("Пустой") // Не выполнится
} else {
fmt.Println("Не пустой") // Вывод: Не пустой
}


3️⃣ Проверка через reflect
Для точной проверки используйте пакет reflect:
import "reflect"

func isEmptyInterface(i interface{}) bool {
return i == nil || reflect.ValueOf(i).IsZero()
}


💡 Итог:
Используйте if i == nil для простых случаев.
Для значений nil с типом — добавьте проверку через reflect.
Не забывайте, что интерфейс с типом, но nil-значением, не считается пустым.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍213👏2
Бесплатный курс по фулстек-разработке — реальность 🔥

Под Новый год Дед Мороз приносит подарки, а наши подписчики — собственные курсы! Сергей Дмитриев, который занимается коммерческой разработкой уже 15 лет, поделился с нами своим обучением по созданию веб-сервиса с нуля. В курс входит 141 урок, 28 часов видео, исходный код и чат поддержки для участников.

Подробнее о курсе читайте на Хабре или в телеграм-канале Сергея
👍1
С наступающим, Go сообщество! Или уже наступившим!🎆🎆

Уже придумали чем заняться в новом году? 😉
Если нет, то предлагаем вам подборку фильмов и сериалов к просмотру:

🔠 Остановись и гори (2014)
🅰️ Игра в имитацию (2014)
🔠 Revolution OS (2001)
©️ Разрабы (2020)
🔠 Кто я (2014)
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰16🎉21
Давайте признавайтесь в комментариях — что вам подарили? 👇
#интерактив
🎉16👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Вот и новый год! 🎆 Давайте погадаем что там нас ждёт?
Делайте скриншот и присылайте в комментарии!⬇️

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤩3🔥21
Привет, Go сообщество!

Мы хотели бы поближе с вами познакомиться! Будем очень признательны за ваши ответы на следующие вопросы!
👍41