Что такое generics в Go?

Middle
1.4k просмотров
AFK Offer AI

Generics появились в Go 1.18 и позволяют писать функции и типы, параметризованные типами. Раньше приходилось использовать interface{} и терять типобезопасность, теперь компилятор сам всё проверяет.

func Filter[T any](s []T, f func(T) bool) []T {
    var result []T
    for _, v := range s {
        if f(v) {
            result = append(result, v)
        }
    }
    return result
}

Можно задавать ограничения (constraints) через интерфейсы: [T comparable], [T constraints.Ordered]. Ограничение: нельзя параметризовать методы — только функции и типы. На практике дженерики используются в пакетах slices, maps и для написания утилитарных функций.

Следующий вопрос

Что такое health check endpoint?