❓ Может ли одна горутина заблокировать мьютекс, а другая его разблокировать?
Мьютексы в Go не отслеживают, какая конкретно горутина вызвала Lock или Unlock. Это означает, что мьютекс может быть заблокирован одной горутиной и разблокирован другой. Такое поведение допускается на уровне реализации, чтобы мьютексы были максимально простыми и эффективными.
Однако это крайне не рекомендуется, так как приводит к сложностям в управлении состоянием мьютекса и повышает риск возникновения ошибок.
👍24
❓ В каких случаях деление на ноль в языке Go не приводит к панике (panic), и какой результат возвращается в этих случаях?
Деление на ноль в Goне приводит к панике в случаях, когда используются числа с плавающей запятой (float64). В зависимости от знака делимого, результат будет:
❗Положительное число делится на ноль: результатом будет положительная бесконечность (+Inf).
❗Отрицательное число делится на ноль: результатом будет отрицательная бесконечность (-Inf).
❗Ноль делится на ноль: результатом будет «not-a-number» (NaN).
Деление на ноль в Go
👍21❤🔥1
Мы запустили свежий канал, где делимся идеями для дизайна интерфейсов. Всё самое стильное, оригинальное и вдохновляющее теперь в одном месте.
📌 Чем полезен канал?
→ Идеи для дизайна интерфейсов.
→ Анимации, которые можно повторить или адаптировать.
→ Лёгкий способ искать вдохновение перед новым проектом.
👉 Подписывайтесь и вдохновляйтесь: UX in GIF
Please open Telegram to view this post
VIEW IN TELEGRAM
🗺 Привычка "срезать углы" при ходьбе – это интуитивное применение алгоритмов?
Так работает жадный алгоритм: вы выбираете наиболее выгодный шаг в каждый момент времени, чтобы минимизировать общий путь. То же самое применяют разработчики, создавая маршруты для такси или доставок.
С нашим курсом «Алгоритмы и структуры данных» вы научитесь решать любые сложные задачи так же эффективно.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/014fe6d8
Так работает жадный алгоритм: вы выбираете наиболее выгодный шаг в каждый момент времени, чтобы минимизировать общий путь. То же самое применяют разработчики, создавая маршруты для такси или доставок.
С нашим курсом «Алгоритмы и структуры данных» вы научитесь решать любые сложные задачи так же эффективно.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/014fe6d8
❓Что произойдет, если в defer использовать анонимную функцию, изменяющую внешнюю переменную?
Изменения произойдут в момент выполнения отложенной функции (а не в момент ее определения)
😢3
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤1👍1
❓Как проверить, пуст ли интерфейс (interface{})?
Интерфейс (interface{}) в Go считается пустым, только если его значение и тип равны nil. Для точной проверки можно использовать reflect.ValueOf(i).IsZero(), чтобы учесть случаи с nil-значением, но заданным типом.
📎 Подробнее можно почитать здесь
Интерфейс (interface{}) в Go считается пустым, только если его значение и тип равны nil. Для точной проверки можно использовать reflect.ValueOf(i).IsZero(), чтобы учесть случаи с nil-значением, но заданным типом.
📎 Подробнее можно почитать здесь
👍8😢1
❓ Можно ли модифицировать map внутри цикла range? Почему?
Нет, модифицировать map во время итерации через range в Go нельзя, так как это может привести к панике (runtime panic). В документации языка указано, что параллельное изменение карты во время итерации не допускается, поскольку внутренняя структура map в Go не поддерживает такие операции.
Причина заключается в том, что изменение map во время итерации может нарушить внутреннюю структуру данных, вызывая неконсистентность или некорректное поведение.
👍8
Память в стеке:
Память в куче:
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍2❤1😁1
Значение GOGC:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!
Ты можешь собрать свой персональный план обучения с помощью нашего новогоднего конструктора. Это шанс не просто начать год с полезных знаний, но и сделать инвестицию в своё будущее, которая окупится многократно.
🔗 Собери свой план и начни путь в IT
Почему это выгодно?
📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.
💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.
💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?
💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.
💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.
💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.
💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.
💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.
Не упусти шанс сделать шаг в будущее! Новый год — это время обновлений, и твоя карьера может стать одним из них.
🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
которые откроют двери в мир IT!
Ты можешь собрать свой персональный план обучения с помощью нашего новогоднего конструктора. Это шанс не просто начать год с полезных знаний, но и сделать инвестицию в своё будущее, которая окупится многократно.
🔗 Собери свой план и начни путь в IT
Почему это выгодно?
📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.
💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.
💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?
💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.
💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.
💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.
💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.
💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.
Не упусти шанс сделать шаг в будущее! Новый год — это время обновлений, и твоя карьера может стать одним из них.
🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
❤1
❓Что такое sync.Pool?
sync.Pool — это потокобезопасная структура для повторного использования временных объектов. Она помогает уменьшить нагрузку на GC, избегая частого выделения и освобождения памяти. Если пул пуст, может создать новый объект через функцию New. Подходит для объектов с коротким сроком жизни, например, буферов. Объекты в пуле не гарантированно сохраняются, так как могут быть очищены GC при недостатке памяти.
👍9
Примеры:
Важно: объекты из sync.Pool могут быть очищены сборщиком мусора, если память ограничена.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Что делает функция runtime.GC()?
Функция runtime.GC() инициирует принудительную сборку мусора.
1. Выполняет полный цикл сборки мусора (включая STW).
2. Полезна для тестирования или контроля состояния памяти (например, измерения выделений памяти).
Примечание: использование runtime.GC() в продакшене не рекомендуется, так как оно нарушает автоматическое управление памятью.
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Можно ли использовать embed для встраивания динамически изменяемых файлов, например, конфигурационных файлов, которые могут изменяться в процессе работы приложения?
Anonymous Quiz
30%
Да
60%
Нет
10%
Наверное
🔥5
❓Что делает инструмент go vet?
Это инструмент для статического анализа кода в Go, который помогает обнаружить потенциальные ошибки, такие как неправильное использование форматов в fmt.Printf, неиспользуемые переменные или параметры, проблемы с указателями и возможные ошибки, которые могут повлиять на выполнение программы.
👍14❤3
❓Какие стандартные инструменты для сортировки предоставляет пакет sort в Go?
В пакете sort Go предоставляет несколько встроенных функций для сортировки стандартных типов данных. Например, sort.Ints используется для сортировки слайсов целых чисел, sort.Strings — для сортировки строк, а sort.Float64s — для чисел с плавающей запятой.
❓А если требуется сортировка не только чисел и строк, а пользовательских структур?
Если требуется кастомная сортировка, пакет предлагает интерфейс sort.Interface. Для его использования нужно реализовать три метода: Len, который возвращает длину слайса, Less для определения порядка элементов и Swap для их перестановки. Это позволяет гибко задавать правила сортировки, например, для структур или сложных типов данных.
❓А если требуется сортировка не только чисел и строк, а пользовательских структур?
👍19
❓Массив и срез в Go это одно и то же? Почему?
Нет, массив и срез в Go — это разные структуры.
Массив: имеет фиксированный размер, который является частью его типа ([5]int), и не может изменяться.
Срез: это динамическая структура, которая ссылается на базовый массив, поддерживает изменение размера и удобнее для работы с данными.
🥱29👍6
Преимущества:
Сценарии, где это полезно:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18