Как упорядочить код на Go и сделать его масштабируемым?
➡️ На открытом уроке 20 августа в 20:00 МСК мы разберём, что такое пакеты в Go, как правильно организовывать структуру папок и работать с модулями.
❗️Вы получите знания о том, как избежать частых ошибок и эффективно использовать Go в реальных проектах.
🔴 Присоединяйтесь к открытому вебинару «Golang Developer. Basic»: https://tglink.io/c8810226e6d9?erid=2W5zFHykW48
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
➡️ На открытом уроке 20 августа в 20:00 МСК мы разберём, что такое пакеты в Go, как правильно организовывать структуру папок и работать с модулями.
❗️Вы получите знания о том, как избежать частых ошибок и эффективно использовать Go в реальных проектах.
🔴 Присоединяйтесь к открытому вебинару «Golang Developer. Basic»: https://tglink.io/c8810226e6d9?erid=2W5zFHykW48
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❤2
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
👍9😁4❤3
📚 Кейс: как ВКонтакте переобучила часть команды на Go
ВКонтакте переходит на сервисную архитектуру и переводит бэкенд на Go. Главная задача — построить высоконагруженную распределенную систему, где каждая команда автономно разрабатывает свой сервис.
🔹 Технические вызовы
Перепроектирование архитектуры с учётом PaaS-платформы.
Интеграции с внутренними сервисами.
🔹 Программа переобучения для внутренних сотрудников
140+ инженеров из компании прошли интерактивный курс по переходу на Go
Синтаксис Go изучали самостоятельно — курс сразу начинался с архитектурных и инфраструктурных задач
Практика: проектирование каркаса микросервиса в условиях, максимально приближенных к реальным задачам компании
💡 Вывод: кейс ВКонтакте показывает, как знания о продукте сохраняются внутри компании, почему эффективнее инвестировать в собственников сотрудников, а не распыляться в найме.
#golang #microservices @golang_books
ВКонтакте переходит на сервисную архитектуру и переводит бэкенд на Go. Главная задача — построить высоконагруженную распределенную систему, где каждая команда автономно разрабатывает свой сервис.
🔹 Технические вызовы
Перепроектирование архитектуры с учётом PaaS-платформы.
Интеграции с внутренними сервисами.
🔹 Программа переобучения для внутренних сотрудников
140+ инженеров из компании прошли интерактивный курс по переходу на Go
Синтаксис Go изучали самостоятельно — курс сразу начинался с архитектурных и инфраструктурных задач
Практика: проектирование каркаса микросервиса в условиях, максимально приближенных к реальным задачам компании
💡 Вывод: кейс ВКонтакте показывает, как знания о продукте сохраняются внутри компании, почему эффективнее инвестировать в собственников сотрудников, а не распыляться в найме.
#golang #microservices @golang_books
🔥5😁1