go2go.playground - ожидаемый тип, найденный 'тип' (и еще 1 ошибка)
Я пытаюсь запустить примеры из черновика дизайна ( The Next Step for Generics) наgo2go.playground
type Pair(type T) struct { f1, f2 T }
, но получаю ошибку
prog.go2:14:11: expected type, found 'type' (and 1 more errors)
Где найти актуальные
go generics
design draft
?
2 ответа
Это старый синтаксис, появившийся несколько недель назад. Пытаться
type Pair[T any] struct { f1, f2 T }
Обратите внимание, что теперь вместо круглых скобок используются квадратные скобки, а
type
ключевое слово больше не используется. Вы также должны использовать
any
ограничение, тогда как раньше вы могли оставить ограничение, если не было ограничения на параметр типа.
Кстати, обычно
Pair
относится к структуре с двумя разными типами для двух полей, например
type Pair[T1, T2 any] struct { first T1; second T2 }
См. Пример кода для сборки на go2go Playground.
Как упоминалось в первом абзаце черновика дизайна 2019 года, новый черновик https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md
Вы смотрите на устаревший проект.
Это актуально: https://go.googlesource.com/proposal/+/refs/heads/master/design/go2draft-type-parameters.md
Итак, это не так:
type Pair(type T) struct { f1, f2 T }
Но:
type Pair[T any] struct { f1, f2 T }