На странице собраны вопросы по Golang — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, concurrency, database.
Средства Go для контроля времени выполнения операции WithTimeout: запускает отсчёт с момента вызова и принимает duration WithDeadline: устанавливает конкретное время в будущем — дату и время завершения WithTimeout…
Когда в Go следует применять panic и как это делать правильно? механизм обработки критических ошибок используется при непредвиденных, фатальных ситуациях чаще всего встречается в низкоуровневом коде или при ошибках…
В каком случае интерфейс равен nil? Интерфейс в Go включает две составляющие: тип и значение. Значение интерфейса считается nil только тогда, когда обе его части равны nil. Если тип определён, а значение равно nil,…
Когда проверяется интерфейс: compile-time или runtime? Контекст: типизация и объектно-ориентированное программирование В статически типизированных языках, включая Java и C#, интерфейсы проверяются на этапе…
Можно ли сделать хэш-индекс уникальным? Контекст: базы данных, индексы Хэш-индекс — структура для быстрого доступа по хэшированному ключу Теоретически хэш-индекс может быть уникальным, если ключи уникальны На практике…
Доступна ли переменная вложенного блока снаружи? Область видимости блока ограничена им самим Переменная, созданная во вложенном блоке, доступна только внутри него Переменные вложенного блока недоступны из внешнего…
Слайс в Go представляет собой структуру из трёх полей: указателя на массив, длины и ёмкости. Он передаётся как значение: копируется структура слайса, а не весь массив. При таком копировании указатель остаётся тем же,…
вместо классического наследования Go использует интерфейсы полиморфное поведение обеспечивается динамической диспетчеризацией методов интерфейса тип, реализующий методы интерфейса, автоматически ему соответствует…
Зачем Go runtime использует “work stealing” и как устроена эта модель? concurrency model Go (Goroutine scheduler) сокращение простоя CPU за счёт динамической балансировки нагрузки каждый P (processor) располагает…
Почему []rune эффективнее прямой конкатенации строк? строки в Go неизменяемы при конкатенации создаются новые копии строк — это требует много памяти []rune представляет собой изменяемый массив символов (runes)…
Почему context не следует надолго сохранять в структуре? context — объект, который передаёт отмену, дедлайны и значения по цепочке вызовов он не рассчитан на длительное хранение, поскольку привязан к сроку жизни…
разные подходы: композиция объектов и иерархия типов встраивание добавляет объект в структуру и использует делегирование наследование расширяет базовый класс и позволяет переопределять его поведение embedding не…