Sobes.tech
Junior — Senior
62

Корректировка поведения срезов в Go

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

Lamoda Tech
Условие задачи

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

package main

import "fmt"

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

func main() {
 arr := []int{1, 2, 3}
 src := arr[:1]

 foo(&src)

 fmt.Println(src) // [1 5]
 fmt.Println(arr) // [1 2 3] — arr не изменяется, так как src отрезан от него
}