【Go 快速入门】泛型 | 类型约束 | 泛型接口 | 通用数据结构
package main
import (
"fmt"
)
// 定义一个泛型接口,包含两个类型参数 T1 和 T2
type GenericInterface[T1, T2 any] interface {
Method1(a T1, b T2) T1
Method2(a T1, b T2) T2
}
// 实现泛型接口的具体类型
type ConcreteType[T1, T2 any] struct {
field1 T1
field2 T2
}
// 为 ConcreteType 实现 GenericInterface 接口
func (c ConcreteType[T1, T2]) Method1(a T1, b T2) T1 {
return a
}
func (c ConcreteType[T1, T2]) Method2(a T1, b T2) T2 {
return b
}
func main() {
// 创建一个 ConcreteType 实例
var generic GenericInterface[string, int] = ConcreteType[string, int]{
field1: "Hello",
field2: 42,
}
// 使用泛型接口的方法
result1 := generic.Method1("World", 24)
result2 := generic.Method2("World", 24)
fmt.Println(result1, result2) // 输出: World 24
}
这段代码定义了一个泛型接口GenericInterface
,它有两个类型参数T1
和T2
,以及两个方法Method1
和Method2
。然后定义了一个具体类型ConcreteType
,它实现了这个泛型接口。在main
函数中,我们创建了ConcreteType
的一个实例,并展示了如何使用泛型接口的方法。这个例子简单直观地展示了如何在Go中使用泛型接口。
评论已关闭