Что выведет этот код с append?

Middle
313 просмотров
AFK Offer AI

Пример: a := []int{1, 2, 3}; b := a[:2]; b = append(b, 4); fmt.Println(a). Ответ: [1 2 4]. Потому что b делит underlying array с a, и cap(b) достаточен — append перезаписывает a[2]. Если бы b := append(a[:2:2], 4) — новый массив, a не изменится. Или: a = append(a, 4, 5, 6) — если cap не хватает, создаётся новый массив. Задачи на append проверяют глубокое понимание слайсов, capacity и shared underlying array.

Следующий вопрос

Что такое goroutine dump?