【问题标题】:go2go.playground - expected type, found 'type' (and 1 more errors)go2go.playground - 预期类型,找到“类型”(还有 1 个错误)
【发布时间】:2021-01-17 00:39:13
【问题描述】:

我尝试在design draft (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

【问题讨论】:

  • 你想达到什么目的?
  • 我尝试测试提供的generic 实现,并将其与其他语言实现进行比较

标签: go generics go-playground go-2


【解决方案1】:

您正在查看过时的设计草案。

这是最新的: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 }

【讨论】:

  • 不适合我,expected ']', found any
  • @mohammad 尝试使用最新的 go2go。有些版本(2020 年初 - 中期)允许使用方括号,但尚未添加对 any 的支持。
  • 这两种方法都保持相同的错误
  • @joash 我在 go2 操场上检查过,它似乎工作正常:go2goplay.golang.org/p/ch1b-dzi-Fj
  • 一个更广泛的例子:go2goplay.golang.org/p/aRSD4rih-Qs
【解决方案2】:

这是几周前以来的旧语法。试试

type Pair[T any] struct { f1, f2 T }

请注意,现在使用方括号代替圆括号,并且不再使用 type 关键字。您还必须使用any 约束,而以前如果对类型参数没有限制,则可以不使用该约束。

顺便说一句,通常Pair 指的是具有 2 个不同类型的结构,例如 type Pair[T1, T2 any] struct { first T1; second T2 }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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2013-09-22
    • 2012-03-25
    相关资源
    最近更新 更多