Golang Books
17K subscribers
334 photos
6 videos
335 files
308 links
Библиотека Golang разработчика

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

@Golang_google - Golang

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golangtests golang tests

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

№ 5032829002
Download Telegram
✔️ Как Go-компилятор устроен изнутри: Unified IR простыми словами**

Go перешёл на единую внутреннюю форму представления кода - Unified IR. Это тихое, но очень важное изменение, которое делает компилятор проще, чище и мощнее.

🔜 В чём суть Unified IR

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

🔜 Зачем так делать

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

🔜**Как это работает**

1. При компиляции пакета
Go берёт AST → сериализует его → восстанавливает уже как Unified IR → оптимизирует и генерирует код.

2. При импорте зависимостей
Компилятор читает `.pkg`-файлы:
- типы
- функции
- константы
- тела функций, доступные для инлайнинга

И всё это в едином бинарном формате.

🔜 Что хранится внутри Unified IR

Формат разбит на логические секции:
- строки (имена, пути)
- типы
- объекты (функции, переменные)
- тела функций
- метаданные, позиции, generics

Это компактно, быстро и даёт компилятору полную картину.

🔜 Почему это важно

Unified IR стал фундаментом под generics, кросс-пакетный инлайнинг и дальнейшие оптимизации.
Go-компилятор теперь проще развивать, а экосистема — быстрее и производительнее.

https://internals-for-interns.com/posts/go-compiler-unified-ir/
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4
👣 The Secret Life of Go Structs: как устроены структуры в Go и почему они важны

В статье объясняется, что такое struct в Go и почему этот простой механизм лежит в основе большинства пользовательских типов.

Главное:

- struct позволяет объединять связанные данные в один объект.
Пример:
type Person struct { Name string; Age int }
- Если создать структуру без инициализации, её поля получают нулевые значения: пустые строки, 0, false и т.п.
- Можно сразу задать значения:

p := Person{Name: "Alice", Age: 30}

Структуры — удобный способ описывать сущности: книги, пользователей, заказы, конфиги и любые другие объекты.

struct + методы в Go - аналог классов, но проще и без наследования. Логика добавляется через методы внешне.

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

https://dev.to/aaron_rose_0787cc8b4775a0/the-secret-life-of-go-structs-3aj9
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍3🥰2🤯2🔥1