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 }
Другие вопросы по тегам