Назад к задачам
Junior — Senior
6

Как сохранить исходный слайс без изменений при использовании append

Компании, где спрашивали:

Lamoda Tech
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо обеспечить, чтобы параметр src в функции foo не модифицировал оригинальный слайс arr, несмотря на вызов append.

package main

import "fmt"

func foo(src []int) {
    src = append(src, 5)
}

func main() {
    arr := []int{1, 2, 3} // len 3, cap 3
    src := append([]int(nil), arr[:1]...) // len 1, cap 1 — скопировать слайс

    foo(src)

    fmt.Println(src) // 1
    fmt.Println(arr) // 1 2 3
}