Sobes.tech
Back to tasks
Junior — Senior
66

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

Get help with live coding in real time with Sobes Copilot
Task condition

Необходимо предсказать, какие данные будут выведены программой, учитывая особенности работы срезов, указателей и возможного копирования при вызове 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)
}