Restrições de indexação no Go 1.18 Genéricos
Com a introdução de genéricos no Go 1.18, os desenvolvedores têm a oportunidade de implementar algoritmos que funcionam com específicos tipos. Um requisito comum é usar tipos que suportam indexação, como matrizes, fatias, mapas e strings.
Restrição indexável
Para restringir um parâmetro de tipo a tipos indexáveis , considere usar a seguinte restrição com uma união:
type Indexable interface {
~[]byte | ~string
}
Limitações da restrição indexável
Embora a restrição acima funcione para indexação de bytes e strings, há limitações para usá-la com outros tipos indexáveis, como mapas e matrizes :
Abordagem Alternativa
Devido a essas limitações, a única união prática que suporta a indexação é []byte | corda. Esta união permite operações de indexação, mas não oferece suporte a operações de intervalo porque não possui um tipo de núcleo.
Exemplo de uso
O exemplo a seguir demonstra como usar a restrição indexável:
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
Esta função pega um valor indexável e um índice e retorna o byte no índice especificado.
Conclusão
While Go 1.18 fornece uma maneira para restringir tipos a tipos indexáveis usando uma união, as limitações dessa restrição significam que ela só é prática para um conjunto limitado de casos de uso, ou seja, indexação de bytes e strings.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3