Go é uma linguagem tipada, o que significa que cada variável e valor em seu programa tem algum tipo específico.
Quando escrevemos funções, precisamos especificar o tipo de seus parâmetros no que é chamado de assinatura da função.
func Somar(x, y float32) float32 {
return x + y
}
Tendo em vista a função acima, imagina como seria repetitivo redeclarar a mesma função para todos os tipos numéricos disponíveis.
E se quisessemos declarar uma função que especifica um grupo de tipos possíveis para um argumento, e deixarmos o compilador "converter" esse tipo genérico para o tipo que usarmos na chamada da função?
Isso é possível usando os generics, que veremos em mais detalhes nas próximas páginas.