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

Что выведет Go: массив передаётся по значению

Вопрос

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

package main

import "fmt"

func set(a [3]int) {
    a[0] = 100
}

func main() {
    a := [3]int{1, 2, 3}
    b := a
    b[1] = 20
    set(a)
    fmt.Println(a, b)
}

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

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

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

Коротко

Код выведет: [1 2 3] [1 20 3]. Массив в Go это значение: присваивание b := a и передача в функцию копируют все элементы.

Что выведет

[1 2 3] [1 20 3]

Разбор

Массив в Go это значение: присваивание b := a и передача в функцию копируют все элементы. Изменения копий не влияют на оригинал. Со слайсами было бы иначе.

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

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