Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpGnFn 86 of 280 menu
◀ ▶

Обобщенная функция в Go

Обобщенную функцию отличают квадратные скобки сразу после имени. Внутри скобок пишут имя параметра типа, затем ограничение после пробела. Так компилятор знает, что T в сигнатуре и теле подставится конкретным типом при сборке.

Ограничение any не отсекает типы: функция может принять число, строку или структуру, если остальная сигнатура это допускает. Параметры и результат по-прежнему обычные имена, только часть из них может зависеть от T.

Сделаем функцию, которая печатает переданное значение без привязки к одному типу. На экране сначала 10, затем строка "hi":

package main import "fmt" func Show[T any](v T) { fmt.Println(v) } func main() { Show(10) Show("hi") }

Объявите обобщенную функцию Twice с одним параметром типа и ограничением широкого типа, которая возвращает удвоенное значение для целого 3, и выведите результат.

Дан следующий код:

func Pair[T any](a, b T) (T, T) { return a, b }

Скажите, сколько параметров типа у этой функции.

Дан следующий код:

func Bad[T int](v T) { }

Скажите, можно ли в квадратных скобках сразу после имени указать только int без интерфейса с перечнем.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить