Склеить два слайса поэлементно в слайс пар. Лишние элементы более длинного
слайса отбрасываются.
func Zip[T any](p, q []T) [][2]T
Требования
i-я пара — {p[i], q[i]}, длина результата — min(len(p), len(q)).
nil или пустой вход — пустой результат (len == 0), без паники.
- Память под результат выделяется один раз: длина известна заранее.
Пример
p, q := []int{2, 3, 4}, []int{5, 6, 7, 8}
fmt.Println(Zip(p, q)) // [[2 5] [3 6] [4 7]]
func ZipN[T any](slices ...[]T) [][]T
i-й кортеж — {s₀[i], s₁[i], …, sₖ₋₁[i]}, длина результата — минимальная
длина среди входов.
- Без аргументов — пустой результат.
- Кортежи независимы: изменение или
append одного кортежа не затрагивает
другие и входные слайсы.
Устно: почему для двух слайсов удобен [2]T, а для N — уже []T? Чем они
различаются в памяти?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.