Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: generics, type parameter, constraint, any, ordered

Какие есть средства обобщённого программирования (generics) в Go?

Проверяет знание возможностей создания обобщённых функций и типов с параметрами.

Короткий ответ

Начиная с Go 1.18, в языке появились type parameters для функций и типов. Объявляют обобщённую функцию func Map[T any](… ) и обобщённый тип type List[T any] struct { … }. Для ограничения типов используют constraints из пакета golang.org/x/exp/constraints или собственные интерфейсы. Это позволяет писать один код для разных типов.

Длинный ответ

Объявление:

func Sum[T int | float64](s []T) T { /* ... */ }
type Stack[T any] struct { elems []T }

Constraints:

  • any — любой тип.

  • constraints.Ordered — все упорядочиваемые типы (<, >).

  • Собственные:

type Adder[T any] interface { Add(T, T) T }

Пример использования:

ints := []int{1,2,3}
floats := []float64{1.1, 2.2}
fmt.Println(Sum(ints), Sum(floats))

Преимущества:

  • Безопасность типов.

  • Отсутствие дублирования кода для разных типов.

Вывод:

Go-генерики облегчают реализацию коллекций и алгоритмов без потери производительности.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Golang

    Golang

Ключевые слова

#generics

#type parameter

#constraint

#any

#ordered

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.