GO_INTERVIEW_LIB Telegram 598
💬 Почему добавление элементов в nil-срез работает, а добавление в nil-мапу вызывает панику?

В Go срезы и тип map работают по-разному:

1. Срезы:
🔸 nil-срез — это валидный срез с нулевой длиной (len == 0) и нулевой ёмкостью (cap == 0).
🔸 Когда мы вызываем append() на nil-срезе, Go выделяет новую память и создаёт срез с достаточной ёмкостью для хранения новых элементов. Поэтому добавление элементов в nil-срез работает без ошибок.

Пример:
var a []int
a = append(a, 4, 5, 6) // Создаётся новый срез в памяти
fmt.Println(a) // [4 5 6]


2. Тип map
🔸 nil-мапа неинициализирована и не имеет памяти для хранения пар ключ-значение.
🔸 Любая попытка добавить элемент в nil-мапу вызовет панику, так как мапа не готова к использованию.
🔸 Для работы с мапой её нужно явно инициализировать с помощью функции make.

Пример:
var m map[int]int
// m[1] = 1 // Вызовет панику
m = make(map[int]int)
m[1] = 1 // Теперь работает
👍142



tgoop.com/go_interview_lib/598
Create:
Last Update:

💬 Почему добавление элементов в nil-срез работает, а добавление в nil-мапу вызывает панику?

В Go срезы и тип map работают по-разному:

1. Срезы:
🔸 nil-срез — это валидный срез с нулевой длиной (len == 0) и нулевой ёмкостью (cap == 0).
🔸 Когда мы вызываем append() на nil-срезе, Go выделяет новую память и создаёт срез с достаточной ёмкостью для хранения новых элементов. Поэтому добавление элементов в nil-срез работает без ошибок.

Пример:

var a []int
a = append(a, 4, 5, 6) // Создаётся новый срез в памяти
fmt.Println(a) // [4 5 6]


2. Тип map
🔸 nil-мапа неинициализирована и не имеет памяти для хранения пар ключ-значение.
🔸 Любая попытка добавить элемент в nil-мапу вызовет панику, так как мапа не готова к использованию.
🔸 Для работы с мапой её нужно явно инициализировать с помощью функции make.

Пример:
var m map[int]int
// m[1] = 1 // Вызовет панику
m = make(map[int]int)
m[1] = 1 // Теперь работает

BY Библиотека Go для собеса | вопросы с собеседований


Share with your friend now:
tgoop.com/go_interview_lib/598

View MORE
Open in Telegram


Telegram News

Date: |

In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option. Unlimited number of subscribers per channel Channel login must contain 5-32 characters As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data.
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American