Restricciones de indexación en Go 1.18 Genéricos
Con la introducción de genéricos en Go 1.18, los desarrolladores tienen la oportunidad de implementar algoritmos que funcionan con tipos. Un requisito común es utilizar tipos que admitan la indexación, como matrices, sectores, mapas y cadenas.
Restricción indexable
Para restringir un parámetro de tipo a tipos indexables , considere usar la siguiente restricción con una unión:
type Indexable interface {
~[]byte | ~string
}
Limitaciones de la restricción indexable
Si bien la restricción anterior funciona para indexar bytes y cadenas, existen limitaciones para usarla con otros tipos indexables, como mapas y matrices. :
Enfoque alternativo
Debido a estas limitaciones, la única unión práctica que admite la indexación es []byte | cadena. Esta unión permite operaciones de indexación, pero no admite operaciones de rango porque carece de un tipo principal.
Ejemplo de uso
El siguiente ejemplo demuestra cómo utilizar la restricción indexable:
func GetAt[T Indexable](v T, i int) byte {
return v[i]
}
Esta función toma un valor indexable y un índice y devuelve el byte en el índice especificado.
Conclusión
Si bien Go 1.18 proporciona una manera Para restringir tipos a tipos indexables usando una unión, las limitaciones de esa restricción significan que solo es práctica para un conjunto limitado de casos de uso, a saber, indexación de bytes y cadenas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3