An introduction to generics
Generics is a feature that allows 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 universal as possible. In other words, generics allow functions to process several data types without the need to write any special code, as is the case with the empty interface and interfaces in general. Interfaces are covered in Chapter 5, Reflection and Interfaces.
When working with interfaces in Go, you must 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...