Что выведет код Junior Слайсы и мапы изнутри спрашивают часто обновлено
Что выведет Go: изменение элемента и append в функции
Вопрос
Что выведет программа? Go 1.23, в go.mod указано go 1.23.
package main
import "fmt"
func change(s []int) {
s[0] = 9
s = append(s, 4)
s[1] = 8
}
func main() {
s := []int{1, 2, 3}
change(s)
fmt.Println(s)
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [9 2 3]. В функцию копируется заголовок, массив общий. s[0] = 9 меняет общий массив.
Что выведет
[9 2 3]
Разбор
В функцию копируется заголовок, массив общий. s[0] = 9 меняет общий массив. Ёмкость 3, поэтому append создаёт новый массив, и s[1] = 8 пишет уже в него. Снаружи видно только первое изменение.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет Go: массив передаётся по значению
Следующий вопрос
Что выведет Go: удаление ключей во время range
Ещё по теме «Слайсы и мапы изнутри»
- Разбить слайс на части по k на Go
- Удаление дубликатов с сохранением порядка на Go
- Группировка анаграмм на Go
- Циклический сдвиг слайса на Go
- Число подмассивов с суммой k на Go
- Топ-k частых слов на Go
- Что выведет Go: append при полной ёмкости
- Что выведет Go: два append в один подслайс