Go 编程中的泛型、类型嵌入与可选配置处理
1. 泛型的使用与不使用场景
1.1 泛型在数据结构和函数中的应用
泛型不仅可以用于函数,还能用于数据结构。例如,我们可以创建一个包含任意类型值的链表:
type Node[T any] struct {
Val T
next *Node[T]
}
func (n *Node[T]) Add(next *Node[T]) {
n.next = next
}
在这个例子中,我们使用类型参数 T 来定义 Node 结构体,并且在 Add 方法中使用了该类型参数。需要注意的是,类型参数不能用于方法参数,只能用于函数参数或方法接收器。例如,以下代码无法编译:
type Foo struct {}
func (Foo) bar[T any](t T) {}
1.2 泛型的常见使用场景
- 数据结构 :在实现二叉树、链表或堆等数据结构时,可以使用泛型来抽象元素类型。
- 处理任意类型的切片、映射和通道的函数 :例如,合并两个通道的函数可以处理任意通道类型:
func merge[T any](ch1, ch2 <
超级会员免费看
订阅专栏 解锁全文
37

被折叠的 条评论
为什么被折叠?



