Introducing generics
Generics are a feature that gives you the capability of not precisely specifying the data type of one or more function parameters, mainly because you want to make your functions as generic as possible. In other words, generics allow functions to process several data types without the need to write special code, as is the case with the empty interface or interfaces in general. However, when working with interfaces in Go, you have to write extra code to determine the data type of the interface variable you are working with, which is not the case with generics.
Let me begin by presenting a small code example that implements a function that clearly shows a case where generics can be handy and save you from having to write lots of code:
func PrintSlice[T any](s []T) {
for _, v := range s {
fmt.Println(v)
}
}
So, what do we have here? There is a function named PrintSlice()
that accepts a slice of any data type. This is denoted by the...