Este contenido detalla una propuesta oficial para permitir la creación de métodos genéricos en el lenguaje de programación Go. Actualmente, Go soporta funciones genéricas, pero los métodos (funciones asociadas a un tipo) no pueden declarar sus propios parámetros de tipo. Históricamente, esta restricción se debió a que permitir métodos genéricos implicaría necesariamente permitir interfaces genéricas, lo cual se considera técnicamente inviable para una implementación eficiente en Go debido a la resolución dinámica de interfaces en tiempo de ejecución. Sin embargo, la propuesta sugiere un cambio de paradigma: los métodos son una característica fundamental de Go para la organización del código y la legibilidad (permitiendo lecturas fluidas como x.a().b()), independientemente de su relación con las interfaces. Por lo tanto, se propone que un método genérico sea simplemente una función genérica con un receptor. Esto se traduce en una modificación sintáctica que permite declarar parámetros de tipo directamente en la firma del método, similar a las funciones. La implementación propuesta incluye ajustes gramaticales para manejar argumentos de tipo en expresiones primarias y asegura que las expresiones de método (MethodExpr) y valores de método (MethodValue) sigan funcionando correctamente con tipos genéricos. Es crucial entender que esto no habilita interfaces genéricas; los métodos genéricos no podrán ser utilizados para satisfacer interfaces estándar, ya que estas no pueden tener parámetros de tipo. Esta mejora facilitará la escritura de código más limpio y reutilizable para estructuras de datos complejas sin necesidad de escribir versiones específicas para cada tipo, reduciendo la repetición de código (boilerplate) en el desarrollo de librerías y aplicaciones. Esta evolución representa un paso importante para hacer que Go sea más expresivo y flexible a la hora de modelar dominios de problemas complejos.
Propuesta oficial: métodos genéricos en Go
