Issue
I’m trying to define a generic data structure using generics, particularly a rudimentary HashTable, I try the following:
type hashable interface {
Hash()
}
type Node[K hashable] struct {
Key K
Value any
}
type HashTable[K hashable] struct {
size int
table [][]Node
}
But I get the following error on the line table [][]Node
cannot use generic type Node[K hashable] without instantiation
I’m not instantiating anything, just defining, what does it want me to do?
Solution
Node
is a parameterized type, so when you want to use it, you have to instantiate its type parameters.
The type you use to instantiate it can of course be a type parameter of the enclosing type, so simply do it like this:
type HashTable[K hashable] struct {
size int
table [][]Node[K]
}
Answered By – icza
Answer Checked By – Jay B. (GoLangFix Admin)