На странице собраны вопросы по Golang — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, concurrency, database.
Как устроена работа gRPC поверх HTTP/2? gRPC — фреймворк для RPC, использующий HTTP/2 HTTP/2 предоставляет двунаправленное мультиплексирование потоков для компактной передачи gRPC применяет кодирование в Protocol…
Как долговременное хранение влияет на производительность Redis за долговременное хранение отвечают режимы RDB и AOF RDB по расписанию сохраняет снимки содержимого БД AOF записывает в журнал все операции, необходимые…
Как тип receiver влияет на реализацию интерфейса двумя структурами контекст: реализация интерфейсов в Go метод с получателем-значением работает с копией объекта метод с получателем-ссылкой (указателем) способен…
Как устроен preemption в Go runtime? механизм принудительного вытеснения горутин является частью Go scheduler (планировщика) останавливает горутину, не позволяя ей монополизировать CPU применяется при длительных…
Как в Go выполнять HTTP-запросы асинхронно? тема: конкурентность, net/http, goroutines параллельный запуск запросов выполняется через goroutines каждый HTTP-запрос помещается в отдельную goroutine (go func()) для…
Как в Go сократить число аллокаций при работе с рунами и слайсами? При работе со слайсами следует контролировать capacity, чтобы не допускать перераспределения памяти. Заранее задавайте capacity с помощью функции…
Как в Go обрабатываются ошибки и паники? ошибка представляется как значение через интерфейс error после вызова функции выполняется явная проверка (if err != nil) паника возникает при критических ошибках, например при…
Как в Go передавать данные между горутинами с помощью каналов и sync? - Go поддерживает конкурентность на основе goroutine - Каналы (channels) служат структурированным механизмом обмена данными - Через каналы…
Как в Go обрабатываются nil и вызовы методов на nil-ресивере nil в Go служит нулевым значением для указателей, интерфейсов, слайсов, карт, каналов и функций У метода может быть ресивер-указатель, значение которого в…
Memory barriers и атомарные операции в Go Memory barriers — это низкоуровневые инструкции процессора и компилятора, управляющие порядком операций с памятью. Они не позволяют CPU или компилятору переупорядочить чтения…
Обобщённое программирование (generics) в Go появилось начиная с Go 1.18 (2022) обобщённые функции и типы объявляются с параметрами типа для этого применяется синтаксис с квадратными скобками: func Foo[T any](param T)…