Что выведет код 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 ошибок.
Предыдущий вопрос
Что выведет Go: слайсы в мапе и общий массив
Следующий вопрос
Что выведет Go: range по массиву и по слайсу
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс