Forwarded from Golang
📘 "Go 101" популярная серия бесплатных книг обновлена под новую версию Golang 1.25 — сразу в четырёх разделах:
• 🚀 Go Optimizations 101: https://go101.org/optimizations/101.html
• 💡 Go Details & Tips 101: https://go101.org/details-and-tips/101.html
• 🔧 Go Generics 101: https://go101.org/generics/101.html
• 📖 Go 101: https://go101.org/article/101.html
@golang_google
#golang #freebook #education #book #go
• 🚀 Go Optimizations 101: https://go101.org/optimizations/101.html
• 💡 Go Details & Tips 101: https://go101.org/details-and-tips/101.html
• 🔧 Go Generics 101: https://go101.org/generics/101.html
• 📖 Go 101: https://go101.org/article/101.html
@golang_google
#golang #freebook #education #book #go
❤11👍8🔥3🥰1
Forwarded from Golang
💥 Необычное поведение структур
В недавнем блоге Мэтта Холла поднята важная деталь, о которой некоторые забывают.
Автор показывает, что при встраивании (`embedding`) структур Go может выбрать неочевидное поле, даже если кажется, что это вызовет ошибку.
Пример:
Вы думаете, тут компиляция не пройдёт из-за неоднозначности?
Но, она завершится успешна — и начпечатает abc.com.
Go выбирает наименее вложенное поле URL, в данном случае FooService.URL.
⚠ Урок: будьте осторожны с struct embedding! Переиспользование полей может скрывать баги, особенно когда поля именованы одинаково, а уровни вложенности различны.
📌 Пост
@golang_google
#golang #go
В недавнем блоге Мэтта Холла поднята важная деталь, о которой некоторые забывают.
Автор показывает, что при встраивании (`embedding`) структур Go может выбрать неочевидное поле, даже если кажется, что это вызовет ошибку.
Пример:
type FooService struct { URL string }
type BarConnectionOptions struct { URL string }
type BarService struct { BarConnectionOptions }
type Options struct {
FooService
BarService
}
opts := Options{
FooService: FooService{URL: "abc.com"},
BarService: BarService{
BarConnectionOptions: BarConnectionOptions{URL: "xyz.com"},
},
}
fmt.Println(opts.URL)
Вы думаете, тут компиляция не пройдёт из-за неоднозначности?
Но, она завершится успешна — и начпечатает abc.com.
Go выбирает наименее вложенное поле URL, в данном случае FooService.URL.
⚠ Урок: будьте осторожны с struct embedding! Переиспользование полей может скрывать баги, особенно когда поля именованы одинаково, а уровни вложенности различны.
📌 Пост
@golang_google
#golang #go
👍11😁4❤3
📚 Кейс: как ВКонтакте переобучила часть команды на Go
ВКонтакте переходит на сервисную архитектуру и переводит бэкенд на Go. Главная задача — построить высоконагруженную распределенную систему, где каждая команда автономно разрабатывает свой сервис.
🔹 Технические вызовы
Перепроектирование архитектуры с учётом PaaS-платформы.
Интеграции с внутренними сервисами.
🔹 Программа переобучения для внутренних сотрудников
140+ инженеров из компании прошли интерактивный курс по переходу на Go
Синтаксис Go изучали самостоятельно — курс сразу начинался с архитектурных и инфраструктурных задач
Практика: проектирование каркаса микросервиса в условиях, максимально приближенных к реальным задачам компании
💡 Вывод: кейс ВКонтакте показывает, как знания о продукте сохраняются внутри компании, почему эффективнее инвестировать в собственников сотрудников, а не распыляться в найме.
#golang #microservices @golang_books
ВКонтакте переходит на сервисную архитектуру и переводит бэкенд на Go. Главная задача — построить высоконагруженную распределенную систему, где каждая команда автономно разрабатывает свой сервис.
🔹 Технические вызовы
Перепроектирование архитектуры с учётом PaaS-платформы.
Интеграции с внутренними сервисами.
🔹 Программа переобучения для внутренних сотрудников
140+ инженеров из компании прошли интерактивный курс по переходу на Go
Синтаксис Go изучали самостоятельно — курс сразу начинался с архитектурных и инфраструктурных задач
Практика: проектирование каркаса микросервиса в условиях, максимально приближенных к реальным задачам компании
💡 Вывод: кейс ВКонтакте показывает, как знания о продукте сохраняются внутри компании, почему эффективнее инвестировать в собственников сотрудников, а не распыляться в найме.
#golang #microservices @golang_books
🔥12❤3👍3😁1🤬1
⚡ Интересный факт про работу Go
Обычно неиспользуемые методы в проекте не попадают в итоговый бинарник.
Но если в коде есть хотя бы один вызов
в бинарь будут скомпилированы все методы, даже неиспользуемые.
https://github.com/golang/go/issues/62024
#golang #programming #reflection
Обычно неиспользуемые методы в проекте не попадают в итоговый бинарник.
Но если в коде есть хотя бы один вызов
MethodByName
через reflection — в бинарь будут скомпилированы все методы, даже неиспользуемые.
https://github.com/golang/go/issues/62024
#golang #programming #reflection
❤6👍5🔥1🥰1