Sobes.tech
Назад к вопросам
Junior — Middle
83

Какие типы обобщенного программирования доступны в языке Go?

Ответ от нейросети

sobes.tech AI

В языке Go обобщённое программирование реализовано через дженерики, которые появились начиная с версии 1.18. Основные типы обобщений в Go включают:

  • Параметризованные типы (generic types): функции и типы могут принимать параметры типов, что позволяет писать универсальный код.
  • Интерфейсы с ограничениями (type constraints): задают требования к типам параметров, например, чтобы тип поддерживал определённые методы или был из набора конкретных типов.

Пример обобщённой функции для слайса:

func IndexOf[T comparable](slice []T, val T) int {
    for i, v := range slice {
        if v == val {
            return i
        }
    }
    return -1
}

Здесь T — параметр типа, ограниченный интерфейсом comparable, что позволяет использовать оператор ==. Такая функция универсальна для любых сравнимых типов.

Таким образом, Go поддерживает обобщения через параметризацию типов и ограничения, что повышает гибкость и повторное использование кода.