Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
656 - Telegram Web
Telegram Web
Что произойдет, если в defer использовать анонимную функцию, изменяющую внешнюю переменную?

Изменения произойдут в момент выполнения отложенной функции (а не в момент ее определения)
😢3
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1👍1
Как проверить, пуст ли интерфейс (interface{})?

Интерфейс (interface{}) в Go считается пустым, только если его значение и тип равны nil. Для точной проверки можно использовать reflect.ValueOf(i).IsZero(), чтобы учесть случаи с nil-значением, но заданным типом.

📎 Подробнее можно почитать здесь
👍8😢1
Можно ли модифицировать map внутри цикла range? Почему?

Нет, модифицировать map во время итерации через range в Go нельзя, так как это может привести к панике (runtime panic). В документации языка указано, что параллельное изменение карты во время итерации не допускается, поскольку внутренняя структура map в Go не поддерживает такие операции.

Причина заключается в том, что изменение map во время итерации может нарушить внутреннюю структуру данных, вызывая неконсистентность или некорректное поведение.
👍8
Чем отличается память в куче от памяти в стеке?

Память в стеке:
Используется для хранения данных с коротким временем жизни (локальные переменные функции).
Быстро выделяется и освобождается, поскольку происходит по принципу LIFO (Last-In-First-Out).
Управляется автоматически при выходе из области видимости функции.
Ограничена по размеру.

Память в куче:
Используется для объектов, срок жизни которых не определён заранее.
Выделение и освобождение сложнее и медленнее, так как управляется сборщиком мусора (GC).
Не ограничена жёсткими рамками, зависит от доступной оперативной памяти.
Подходит для глобальных и длительно живущих объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱10👍21😁1
Что такое GOGC?

GOGC (Garbage Collection Goal) — это переменная окружения или настройка, управляющая частотой работы сборщика мусора в Go. GOGC определяет процентный прирост памяти, который допускается перед запуском очередного цикла GC.

Значение GOGC:
100 (по умолчанию): GC запускается, когда используемая память увеличивается на 100% по сравнению с памятью, оставшейся после последнего цикла GC.
0: отключает автоматическую сборку мусора.
<100: увеличивает частоту работы GC (более агрессивная сборка).
>100: снижает частоту работы GC (редкие сборки).
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-маршрут сейчас или выбери курс по новогодней скидке
Что такое sync.Pool?

sync.Pool — это потокобезопасная структура для повторного использования временных объектов. Она помогает уменьшить нагрузку на GC, избегая частого выделения и освобождения памяти. Если пул пуст, может создать новый объект через функцию New. Подходит для объектов с коротким сроком жизни, например, буферов. Объекты в пуле не гарантированно сохраняются, так как могут быть очищены GC при недостатке памяти.
👍9
🤨В каких случаях лучше использовать sync.Pool?

sync.Pool подходит для повторного использования объектов, которые:

Имеют короткий срок жизни.
Часто создаются и освобождаются.
Не требуют постоянного хранения в памяти.

Примеры:
Буферы для обработки данных.
Временные структуры, используемые в алгоритмах.
Часто используемые небольшие объекты (например, []byte).

Важно: объекты из sync.Pool могут быть очищены сборщиком мусора, если память ограничена.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Что делает функция runtime.GC()?

Функция runtime.GC() инициирует принудительную сборку мусора.
1. Выполняет полный цикл сборки мусора (включая STW).
2. Полезна для тестирования или контроля состояния памяти (например, измерения выделений памяти).

Примечание: использование runtime.GC() в продакшене не рекомендуется, так как оно нарушает автоматическое управление памятью.
👍10
Что такое пакет embed в Go, и когда его стоит использовать?

Пакет embed позволяет встраивать файлы в исполняемый бинарник, что полезно для создания автономных приложений, где важно, чтобы все ресурсы (например, конфигурационные файлы или статические данные) были в одном файле. Он особенно полезен для серверов или CLI-инструментов, где важно избежать зависимости от внешних файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Можно ли использовать embed для встраивания динамически изменяемых файлов, например, конфигурационных файлов, которые могут изменяться в процессе работы приложения?
Anonymous Quiz
30%
Да
60%
Нет
10%
Наверное
🔥5
Что делает инструмент go vet?

Это инструмент для статического анализа кода в Go, который помогает обнаружить потенциальные ошибки, такие как неправильное использование форматов в fmt.Printf, неиспользуемые переменные или параметры, проблемы с указателями и возможные ошибки, которые могут повлиять на выполнение программы.
👍143
Какие стандартные инструменты для сортировки предоставляет пакет sort в Go?

В пакете sort Go предоставляет несколько встроенных функций для сортировки стандартных типов данных. Например, sort.Ints используется для сортировки слайсов целых чисел, sort.Strings — для сортировки строк, а sort.Float64s — для чисел с плавающей запятой.

А если требуется сортировка не только чисел и строк, а пользовательских структур?


Если требуется кастомная сортировка, пакет предлагает интерфейс sort.Interface. Для его использования нужно реализовать три метода: Len, который возвращает длину слайса, Less для определения порядка элементов и Swap для их перестановки. Это позволяет гибко задавать правила сортировки, например, для структур или сложных типов данных.
👍19
Массив и срез в Go это одно и то же? Почему?

Нет, массив и срез в Go — это разные структуры.

Массив: имеет фиксированный размер, который является частью его типа ([5]int), и не может изменяться.
Срез: это динамическая структура, которая ссылается на базовый массив, поддерживает изменение размера и удобнее для работы с данными.
🥱29👍6
В Go 1.24 представлено обновление кэширования для команды go run. Объясните, как работает это кэширование, какие преимущества оно даёт и в каких ситуациях может быть полезным.

В Go 1.24 исполняемые файлы, созданные командой go run, теперь кэшируются. При повторном выполнении go run с теми же исходными файлами и зависимостями Go использует уже скомпилированный файл из кэша, вместо того чтобы повторно компилировать код. Это значительно ускоряет выполнение команды, особенно для крупных проектов.

Преимущества:
Ускорение разработки: повторное выполнение скриптов занимает меньше времени, так как компиляция выполняется только при изменении кода.
Снижение нагрузки на систему: меньше процессорного времени тратится на компиляцию, что особенно важно на больших проектах.
Оптимизация ресурсов: уменьшает потребность в повторной обработке зависимостей.

Сценарии, где это полезно:
Частый запуск скриптов для тестирования изменений.
Использование go run для небольших утилит или прототипов.
Повторное выполнение кода с неизменёнными входными данными.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Представьте, что вы часто используете go run для запуска скриптов, но со временем замечаете, что дисковое пространство начинает уменьшаться из-за накопленного кэша. Какой командой можно очистить кэш, связанный с go run, и что именно будет удалено?

Кэш для go run, как и другие данные сборки, управляется через стандартный кэш Go. Чтобы очистить кэш, можно использовать команду:
go clean -cache

Это удалит все закэшированные данные, включая кэш для go run, освобождая место на диске.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🌚5
Что такое Escape Analysis?

Escape Analysis (анализ утечки) — это процесс, который компилятор Go использует, чтобы определить, где должны быть размещены переменные: в стеке или в куче.

⚙️ Если переменная не «выходит» за пределы области видимости функции, компилятор размещает её в стеке. Это быстрее и дешевле, поскольку стек управляется автоматически, и память освобождается при выходе из функции.
⚙️ Если переменная выходит за пределы области видимости функции, она размещается в куче. Это необходимо, чтобы гарантировать её доступность в других частях программы, но работа с кучей более затратна (например, требуется garbage collector).
👍17
Что конкретно проверяет Escape Analysis?

Go выполняет анализ утечки во время компиляции. Компилятор проверяет, может ли ссылка на переменную:

Возвращаться из функции.
Использоваться в других goroutines.
Передаваться в функцию, которая сохраняет её для последующего использования.

Если хотя бы одно из этих условий выполняется, переменная размещается в куче.
👍9
Что такое Fluent API?

Fluent API — это стиль проектирования интерфейсов, который позволяет вызывать методы в цепочке, улучшая читаемость и выразительность кода. Обычно методы Fluent API возвращают текущий объект, что позволяет последовательно вызывать операции.

Какие вы знаете примеры Fluent API в Go?

gorm для работы с базами данных.
resty, библиотека для работы с REST API.
strings.Builder
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👾2
2025/07/09 15:28:24
Back to Top
HTML Embed Code: