Golang Books
16.9K subscribers
330 photos
6 videos
335 files
310 links
Библиотека Golang разработчика

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

@Golang_google - Golang

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golangtests golang tests

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

№ 5032829002
Download Telegram
Forwarded from Golang
🛠 Как Go понимает ваш код: разбор статьи «The Go Parser»

Внутри компилятора Go после лексера идёт следующий этап - парсер. Он принимает поток токенов и превращает его в абстрактное синтаксическое дерево (AST).

Что делает парсер
- проверяет соответствие кода грамматике Go
- строит AST: функции, выражения, блоки, импорты
- готовит структуру для семантического анализа и генерации кода

Как он работает
- читает токены и смотрит вперёд (lookahead), чтобы решить, что разбирать
- вызывает функции вроде parseFile / parseDecl / parseExpr
- следит за областями видимости и комментариями
- начинает с package → imports → объявления

Пример: даже простой hello-world превращается в дерево, где есть узлы для пакета, функции main, вызова fmt.Println и строкового литерала. Это и есть «скелет» программы, который потом пройдёт проверку типов и оптимизации.

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

👉 Подробнее

@Golang_google
7👍5
Если увлекаешься технологиями, не пропусти True Tech Champ 21 ноября — масштабный ИТ-фест от МТС 🔥

В программе:

📝 доклады о технологиях будущего от экспертов в ИИ, включая руководителя фундаментальных исследований MWS AI Валентина Малых и ведущего RnD-разработчика MWS и аспиранта ISR Lab и Skoltech Артема Лыкова;
🛻 шоу-битва роботов со спецэффектами и сюжетной линией;
📝 воркшоп по работе с ИИ-агентами от канадского разработчика и автора книги AI Agents in Action Майкла Ланэма, кодинг-практикум с MWS AI и интеллектуальный спарринг с искусственным интеллектом;
◻️ 20+ площадок с активностями: IT-Родео, робофайтинг, лазерный лабиринт и многое другое.
🔴 А в завершение дня — афтепати со звездным хедлайнером.

Фестиваль бесплатный, пройдет 21 ноября в Москве и онлайн.
Смотри подробную программу на сайте и регистрируйся — количество мест ограничено.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
⚡️ Новое исследование, опубликованное в Nature, показывает: языковые модели по-прежнему путают «знание» и «убеждение», смешивая факты и выдумку.

Авторы представили новый бенчмарк KaBLE - 13 тыс. вопросов, 13 задач, 24 протестированные модели — и обнаружили серьёзные провалы в сценариях «ложное убеждение от первого лица».

KaBLE проверяет, понимает ли модель:
- кто что знает,
- кто только верит,
- и соответствует ли утверждение реальности.

На задачах ложного убеждения от первого лица:
- GPT-4o падает с 98.2% до 64.4%,
- DeepSeek R1 — с ~90% до 14.4%.

Это значит, что модели выглядят умными в одной формулировке задач, но ломаются в той, которая ближе к реальному общению пользователей («я думаю…», «я верю…»).

Для ложного убеждения от третьего лица новые модели дают ~95%, старые ~79%,
но у задач от первого лица результаты проседают до 62.6% и 52.5% соответственно.

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

Исследователи также проверили рекурсивные знания — «кто знает, что кто-то знает…».
Новые модели решают многие случаи, но их логические шаги нестабильны и выглядят как сложное сопоставление паттернов, а не как уверенное правило рассуждения.

Итог: LLM всё ещё слабо различают знание, убеждение и факты — особенно когда человек говорит о себе.

nature.com/articles/s42256-025-01113-8
👍74
Как реализовать Outbox-паттерн в Go

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

Как это работает:
- в той же транзакции, где создаёте данные (например, заказ), записываете событие в таблицу outbox
- фоновый процесс периодически выбирает pending-записи через FOR UPDATE SKIP LOCKED
- отправляет событие в брокер
- помечает запись как обработанную

Так достигается атомарность: либо и данные, и событие записаны, либо ничего.
Для Go обычно используют связку Postgres + транзакции + отдельный dispatcher-воркер.

Идеально подходит для микросервисов, e-commerce и всего, что живёт на событиях.

https://packagemain.tech/p/how-to-implement-the-outbox-pattern-in-golang

Видео: https://www.youtube.com/watch?v=iMQ-hb535AE
👍64
Примеры использования client-go — официальной Go-библиотеки для взаимодействия с Kubernetes API. Репозиторий содержит набор минималистичных, но рабочих программ, которые демонстрируют, как использовать client-go для различных задач:

- Получение списка Pod'ов
- Прослушивание событий (watch)
- Использование контроллеров
- Работа с workqueue
- Создание кастомных клиентов
- Реализация информеров
- Примеры c RBAC и настройкой доступа

Каждый пример максимально изолирован и понятен, что делает репозиторий отличной стартовой точкой для тех, кто хочет разобраться, как изнутри работает Kubernetes-клиент на Go. Особенно полезно для разработчиков операторов и контроллеров.

https://github.com/iximiuz/client-go-examples
👍43🔥2
🖥  Работа со строками и рунами в Go — откройте внутреннюю механику языка

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

📆17 ноября в 20:00 МСК на открытом уроке разберём, как устроены строки и руны в Go, что происходит «под капотом» при работе с кодировками и как писать корректный, быстрый код для обработки текста. Вместе с преподавателем напишем живые примеры, разберём частые ошибки и объясним, как их избежать. 

➡️ Урок проходит в преддверие старта курса «Golang Developer. Basic». Все участники вебинара получат скидку на обучение: https://otus.pw/qiar/?erid=2W5zFHaQa8Y

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1🤯1
Forwarded from Golang
👣 В Go 1.26 добавят в net.Dialer новые сетевые методы с поддержкой контекста.

Они объединяют эффективность существующих высокоуровневых функций набора соединений с возможностью отмены через Dialer.DialContext — то есть будут быстрее и надёжнее при работе с сетевыми вызовами.

Для тех случаев, когда вы точно знаете сеть (TCP, UDP, IP или Unix-сокет) и хотите:

- минимальные расходы (без лишнего разрешения адресов)
- контроль таймаута/отмены через context
- современный тип адресов из netip


В целом это шаг к более гибкому, эффективному и контролируемому сетевому подключению в Go.

Пример использования:

var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

raddr := netip.MustParseAddrPort("127.0.0.1:12345")
conn, err := d.DialTCP(ctx, "tcp", netip.AddrPort{}, raddr)
if err != nil { log.Fatalf("Failed to dial: %v", err) }
defer conn.Close()


https://antonz.org/accepted/net-dialer-context/

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7