Что выведет код Middle Слайсы и мапы изнутри спрашивают часто обновлено

Что выведет Go: append при полной ёмкости

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

func main() {
    a := []int{1, 2, 3}
    b := append(a, 4)
    b[0] = 100
    fmt.Println(a[0], b[0])
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1 100. Литерал даёт слайс с len 3 и cap 3.

Что выведет

1 100

Разбор

Литерал даёт слайс с len 3 и cap 3. Места нет, поэтому append выделяет новый массив и копирует данные. После этого b живёт отдельно, и изменение b[0] не трогает a.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.