Back to questions
Senior
1
Какие типы данных в Go являются ссылочными?
Companies where asked
SberAuto
Answer from AI
sobes.tech AI
В Go ссылочными типами данных считаются те, которые хранят указатель на область памяти, а не сами данные. К ним относятся:
- Указатели (
*Type) — хранят адрес значения. - Срезы (
[]Type) — структура, содержащая указатель на массив, длину и ёмкость. - Карты (map) — внутренне реализованы через хеш-таблицу, передаются по ссылке.
- Каналы (chan) — ссылочный тип для коммуникации между горутинами.
- Функции — переменные-функции передаются по ссылке.
Например, при передаче среза в функцию копируется структура с указателем, но не копируются сами элементы массива, на который он ссылается. Это позволяет эффективно работать с большими объемами данных без копирования.
func modify(slice []int) {
slice[0] = 100
}
func main() {
s := []int{1, 2, 3}
modify(s)
fmt.Println(s) // [100 2 3]
}