Go语言 将类型定义为泛型类型示例化

f8rj6qna  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(130)

在下面的例子中,我试图定义一个PreciseAdder类型,它可以简化示例化泛型类型的使用。不幸的是,go编译器似乎认为泛型类型上定义的方法不适用于PreciseAdder类型。我知道我可以通过组合解决这个问题,但是有没有一种方法可以让它与类型定义一起工作,如果没有,原因是什么?

package main

type Addable interface {
    Add()
}

type Adder[T Addable] struct{}

func (a Adder[T]) DoAdd(){}

type PreciseAddable struct{}

func (p PreciseAddable)Add(){}

type PreciseAdder Adder[PreciseAddable]

func main() {
    var p PreciseAdder
    p.DoAdd()
}

字符串

kq0g1dla

kq0g1dla1#

这一点:

type PreciseAdder Adder[PreciseAddable]

字符串
是一个类型声明,更确切地说是一个 * 类型定义 *。它创建一个新的类型,所有方法都被剥离。
相反,使用一个 type alias 来保留所有方法,它只是引入了一个新的标识符来引用相同的类型:

type PreciseAdder = Adder[PreciseAddable]


(Note标识符和类型之间的=符号)。

相关问题