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

Как функция append меняет срезы и ссылки

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

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

type account struct {
    value int
}

func main() {
    listA := make([]account, 0, 2)
    listA = append(listA, account{})
    listA = append(listA, account{})
    listB := append(listA, account{})

    ptr := &listB[0]
    ptr.value = 100

    fmt.Println(listA, listB)

    listA = append(listB, account{})
    ptr.value += 100

    fmt.Println(listA, listB)
}