❓Какую роль выполняют функции make и new в Go, и чем они отличаются
В Go, несмотря на наличие сборщика мусора, разработчикам всё равно необходимо выделять память для новых переменных. Для этого язык предоставляет две встроенные функции: newиmake.
➡️ Функция new(T) выделяет память для переменной типа T, инициализирует её нулевым значением этого типа и возвращает указатель на эту переменную.
p := new(int)
В этом примере p будет указателем на новый int, инициализированный значением 0.
➡️ Функция makeиспользуется для инициализации срезов, карт и каналов, которые являются встроенными типами данных в Go и требуют дополнительной инициализации перед использованием.
• Срезы: при создании среза с помощью make, задаются начальная длина и ёмкость, что позволяет Go заранее выделить нужное количество памяти
s := make([]int, 5, 10)
• Map: при создании map с помощью make осуществляется его инициализация перед добавлением элементов
m := make(map[string]int)
• Каналы: make также используется для создания каналов.
ch := make(chan int)
Основные различия между make и new
➡️new возвращает указатель на тип, инициализированный нулевым значением этого типа. ➡️makeвозвращает инициализированный экземпляр встроенного типа (среза, map или канала), готовый к использованию. ➡️Обычно, для выделения памяти под переменные используют литералы типа илиmake. newиспользуется реже и в основном в более специфичных случаях.
❓Какую роль выполняют функции make и new в Go, и чем они отличаются
В Go, несмотря на наличие сборщика мусора, разработчикам всё равно необходимо выделять память для новых переменных. Для этого язык предоставляет две встроенные функции: newиmake.
➡️ Функция new(T) выделяет память для переменной типа T, инициализирует её нулевым значением этого типа и возвращает указатель на эту переменную.
p := new(int)
В этом примере p будет указателем на новый int, инициализированный значением 0.
➡️ Функция makeиспользуется для инициализации срезов, карт и каналов, которые являются встроенными типами данных в Go и требуют дополнительной инициализации перед использованием.
• Срезы: при создании среза с помощью make, задаются начальная длина и ёмкость, что позволяет Go заранее выделить нужное количество памяти
s := make([]int, 5, 10)
• Map: при создании map с помощью make осуществляется его инициализация перед добавлением элементов
m := make(map[string]int)
• Каналы: make также используется для создания каналов.
ch := make(chan int)
Основные различия между make и new
➡️new возвращает указатель на тип, инициализированный нулевым значением этого типа. ➡️makeвозвращает инициализированный экземпляр встроенного типа (среза, map или канала), готовый к использованию. ➡️Обычно, для выделения памяти под переменные используют литералы типа илиmake. newиспользуется реже и в основном в более специфичных случаях.
While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good. 3How to create a Telegram channel? According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Clear Select “New Channel”
from us