В чем разница при передаче в функцию слайса на 1 и на 100 элементов

«В чем разница при передаче в функцию слайса на 1 и на 100 элементов» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Разницы в передаче нет - в обоих случаях передается структура слайса (указатель на массив, длина и емкость). Размер слайса не влияет на передачу, так как копируется только заголовок (24 байта на 64-битной системе), а не элементы.

Пример:

func modify(s []int) {
    s[0] = 100 // изменяет оригинальный слайс
}

func main() {
    small := make([]int, 1)
    big := make([]int, 100)

    modify(small) // передается заголовок слайса
    modify(big)   // аналогично
}

Оба слайса передаются одинаково, изменения внутри функции будут видны снаружи. Размер данных не копируется - копируется только заголовок слайса.