#
Generics
Seguindo com nosso exemplo do pacote utils
, vamos analisar nossa função Soma
func Soma(a, b int) int {
return a + b
}
Essa função Soma
possui uma lógica muit simples, ele recebe dois inteiros e retorna um inteiro. Agora, imagine que queremos somar dois floats, teríamos que criar outra função SomaFloat
que aceita dois floats e retorna um float.
func SomaFloat(a, b float64) float64 {
return a + b
}
Essa função SomaFloat
é praticamente igual a função Soma
, a única diferença é que ela aceita dois floats e retorna um float. Aí agora tenho que fazer isso para todos os tipos de dados que eu quero somar e repetir para todas as operações matemáticas. Parece meio contra produtivo, não é mesmo? Antes da versão 1.18 do Go, resolveríaamos esse problema com interfaces, mas agora temos Generics! Veja como podemos resolver esse problema com Generics: