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

Что выведет Go: nil-слайс и пустой слайс

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23. Каждую строку вывода пишите с новой строки.

package main

import "fmt"

func main() {
    var a []int
    b := []int{}
    fmt.Println(a == nil, b == nil, len(a), len(b))
    a = append(a, 1)
    fmt.Println(a)
}

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

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

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

Коротко

Код выведет: true false 0 0, [1]. var a []int это nil-слайс, литерал []int{} создаёт пустой, но не nil.

Что выведет

true false 0 0
[1]

Разбор

var a []int это nil-слайс, литерал []int{} создаёт пустой, но не nil. Длина у обоих 0. append к nil-слайсу работает как к пустому и выделяет массив.

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

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