Основы синтаксиса Строки и руны Массивы и слайсы Map Структуры и методы Интерфейсы Горутины и конкурентность Каналы defer, panic, recover Обработка ошибок Указатели Пакет sync Тестирование Пакеты и модули Стандартная библиотека Context Generics iota и перечисления Разное / продвинутое

Generics

4 вопросов

Generics (параметрический полиморфизм) добавлены в Go 1.18. Квадратные скобки для параметров типа, constraints (any, comparable), type sets для ограничения типов.

1 С какой версии Go поддерживает generics? 🟢 Лёгкий
Ответ: B) 1.18

Generics (параметрический полиморфизм) добавлены в Go 1.18 (март 2022). Это было одно из самых ожидаемых изменений. Синтаксис: func F[T any](x T) T.

Подробнее →
2 Как объявить generic-функцию? 🟡 Средний
Ответ: B) func F[T any](x T)

Go использует квадратные скобки [] для параметров типа (не <> как в Java/C++). T any - параметр типа T с ограничением any (любой тип).

Подробнее →
3 Что такое type constraint в generics? 🟡 Средний
Ответ: B) Ограничение на допустимые типы параметра

Constraint - интерфейс, определяющий, какие типы допустимы. any - любой тип, comparable - типы с ==, constraints.Ordered - типы с <. Можно создавать свои.

Подробнее →
4 Что такое comparable constraint? 🟡 Средний
Ответ: B) Типы, поддерживающие == и !=

comparable - встроенный constraint для типов, которые можно сравнивать через == и !=. Это все базовые типы, массивы, структуры с сравнимыми полями. Слайсы, map, функции - не comparable.

Подробнее →