Что такое референсные типы

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

Ответ

Референсные типы в Go — это типы, которые хранят ссылку на данные, а не сами данные. К ним относятся:

  • Указатели (*T)
  • Срезы ([]T)
  • Мапы (map[K]V)
  • Каналы (chan T)
  • Функции (func)
  • Интерфейсы (interface{})

При передаче референсного типа в функцию или присваивании копируется только ссылка, а не данные. Пример:

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

func main() {
    slice := []int{1, 2, 3}
    modifySlice(slice)
    fmt.Println(slice) // [100 2 3]
}