Что выведет код Middle Слайсы и мапы изнутри обновлено
Что выведет Go: удаление ключей во время range
Вопрос
Что выведет программа? Go 1.23, в go.mod указано go 1.23.
package main
import "fmt"
func main() {
m := map[int]bool{}
for i := range 10 {
m[i] = true
}
for k := range m {
if k%2 == 0 {
delete(m, k)
}
}
fmt.Println(len(m))
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 5. Удалять ключи во время обхода мапы безопасно: удалённые ещё не посещённые ключи просто не встретятся.
Что выведет
5
Разбор
Удалять ключи во время обхода мапы безопасно: удалённые ещё не посещённые ключи просто не встретятся. Все чётные ключи от 0 до 8 удалены, осталось 5. Порядок обхода случайный, но результат от него не зависит. range 10 по целому работает с Go 1.22.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет Go: изменение элемента и append в функции
Следующий вопрос
Что выведет Go: чтение отсутствующего ключа map
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс