Go语言:如何定义一个可以使用不同类型的链表结构体

1wnzp6jl  于 2023-01-10  发布在  Go
关注(0)|答案(1)|浏览(102)

常用的链表结构如下所示:

type IntNode struct {
    Value  int
    Next   *IntNode
    Pre    *IntNode
}

但是当我想让value是字符串的时候,我需要另一个结构体:

type StringNode struct {
    Value string
    Next *StringNode
    Pre  *StringNode
}

我不想用interface{}来减少Assert的消耗,有没有一种可行的方法可以通过一个结构来编写不同的类型?

yx2lnoni

yx2lnoni1#

Go语言1.18支持泛型:

type LLNode[T any] struct {
    Value T
    Next  *LLNode[T]
    Prev  *LLNode[T]
}

因此,现在您可以用途:

intList := &LLNode[int]{Value: 1}
stringList := &LLNode[string]{Value: "abcd"}

相关问题