ch
Feedback
Библиотека задач по Go | тесты, код, задания

Библиотека задач по Go | тесты, код, задания

前往频道在 Telegram

Задачи и тесты по Go для тренировки и обучения. Покажем, как запустить своего ии-агента: https://clc.to/tvpmD По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot Наши каналы: https://t.me/proglibrary/9197

显示更多
6 750
订阅者
无数据24 小时
无数据7
+1330
帖子存档
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хо
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

💡Стек или куча? 🤔 Живет ли переменная на стеке вызовов, или она динамически выделена в куче? В большинстве случаев вам не стоит беспокоиться об этом. Go собирает мусор и автоматически очищает неиспользуемые переменные. Однако сборка мусора имеет свою цену, поэтому чем меньше выделений делает ваш код, тем быстрее он может работать. 📌 Как узнать, выделяется ли переменная в куче? Некоторые операции по умолчанию вызывают выделение памяти в куче и поэтому легко обнаруживаются и исправляются. Вот несколько примеров: 🔸Строковые переменные неизменяемы. Конкатенация двух строк приводит к новой аллокации и сборке мусора. В качестве альтернативы можно использовать strings.Builder. 🔸Срезы, которые растут за пределы своей емкости, реаллоцируются. Решение: предварительно выделить срез с помощью make(). 🔸Когда функция создает локальную переменную и возвращает указатель на эту переменную, переменная должна быть выделена в куче. 📌 Однако есть ситуации, когда выделения в куче неочевидны. Подумайте об указателях, скрытых внутри других типов данных, таких как срезы или мапы. Или рассмотрите массивы. Если массив слишком большой, чтобы жить на стеке, он выделяется в куче. 📌 Как найти эти случаи выделения в куче? Запустите или скомпилируйте свой код с флагом сборки мусора "-m", и команда Go выведет заметку каждый раз, когда переменная перемещается или уходит со стека в кучу:
go run -gcflags "-m" 
или 
go tools compile -m
#tip

💡Стек или куча? 🤔 Живет ли переменная на стеке вызовов, или она динамически выделена в куче? В большинстве случаев вам не стоит беспокоиться об этом. Go собирает мусор и автоматически очищает неиспользуемые переменные. Однако сборка мусора имеет свою цену, поэтому чем меньше выделений делает ваш код, тем быстрее он может работать. 📌 Как узнать, выделяется ли переменная в куче? Некоторые операции по умолчанию вызывают выделение памяти в куче и поэтому легко обнаруживаются и исправляются. Вот несколько примеров: 🔸Строковые переменные неизменяемы. Конкатенация двух строк приводит к новой аллокации и сборке мусора. В качестве альтернативы можно использовать strings.Builder. 🔸Срезы, которые растут за пределы своей емкости, реаллоцируются. Решение: предварительно выделить срез с помощью make(). 🔸Когда функция создает локальную переменную и возвращает указатель на эту переменную, переменная должна быть выделена в куче. 📌 Однако есть ситуации, когда выделения в куче неочевидны. Подумайте об указателях, скрытых внутри других типов данных, таких как срезы или мапы. Или рассмотрите массивы. Если массив слишком большой, чтобы жить на стеке, он выделяется в куче. 📌 Как найти эти случаи выделения в куче? Запустите или скомпилируйте свой код с флагом сборки мусора "-m", и команда Go выведет заметку каждый раз, когда переменная перемещается или уходит со стека в кучу:
go run -gcflags "-m" 
или 
go tools compile -m
#tip

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

Что выведет код?
Anonymous voting

Библиотека задач по Go | тесты, код, задания - Telegram 频道 @go_problems_lib 的统计与分析