William Koller
2 min readMar 22, 2023

--

Como trabalhar com Generics no Golang

A implementação de generics em Go foi introduzida na versão 1.18 da linguagem.

Ela é baseada no conceito de “type parameters”. Um type parameter é um tipo de valor especificado no momento da chamada de uma função ou declaração de tipo, sendo usado para definir o comportamento genérico da função ou tipo. O type parameter é especificado entre colchetes após o nome da função ou tipo.

A implementação de generics em Go usa o mecanismo de “type inference” para determinar o tipo de valor apropriado para o type parameter em tempo de compilação. Isso significa que, em muitos casos, o tipo de valor pode ser inferido automaticamente a partir do contexto em que a função ou tipo genérico é usado.

O código de exemplo define uma função genérica para encontrar o índice da primeira ocorrência de um valor em um slice de qualquer tipo que suporta a operação de igualdade. Em seguida, a função é chamada com diferentes tipos de dados para encontrar o índice desejado

package main

import "fmt"

func indexOf[T comparable](arr []T, s T) int {
for i, v := range arr {
if s == v {
return i
}
}

return -1
}

func main() {
n := indexOf([]int64{1, 2, 3, 5, 8, 13}, 8)
fmt.Println("index of int64", n)

s := indexOf([]string{"py", "js", "go", "rs"}, "js")
fmt.Println("index of string", s)
}

Output:

go run ./main.go
index of int64 4
index of string 1

Repo de exemplo: https://github.com/williamkoller/generics-go

--

--

William Koller
William Koller

Written by William Koller

Senior Software Engineer (Backend)

No responses yet