Si tu veux implémenter any ou filter en go, il y a en gros deux possibilités : passer par interface{} ou utiliser de la génération de code.
Pour la première approche, tu as des bibliothèques comme https://github.com/chrislusf/gleam, mais tu perds le typage statique et les casts rendent la lecture du code assez moche, je trouve.
Pour la seconde approche, https://github.com/elliotchance/pie est un exemple. Mais la génération de code a aussi ses mauvais côtés (par exemple, ça allonge le temps de compilation). Et dans le cas de pie, ça oblige à déclarer un type spécifique sur lequel attacher la génération de code, ce qui rend compliqué à utiliser avec des bibliothèques tierces.
Pour en revenir à la question initiale, on ne peut pas utiliser d'interface en Go pour un comportement identique entre objets car il n'y a pas de généricité, et même si le comportement est le même, les types sont différents et les types apparaissent dans la déclaration de l'interface.
[^] # Re: Go est lent, Rust est rouillé !
Posté par Bruno Michel (site web personnel) . En réponse au journal Explorer des langages de programmation - édition 2020. Évalué à 4.
Si tu veux implémenter
anyoufilteren go, il y a en gros deux possibilités : passer parinterface{}ou utiliser de la génération de code.Pour la première approche, tu as des bibliothèques comme https://github.com/chrislusf/gleam, mais tu perds le typage statique et les casts rendent la lecture du code assez moche, je trouve.
Pour la seconde approche, https://github.com/elliotchance/pie est un exemple. Mais la génération de code a aussi ses mauvais côtés (par exemple, ça allonge le temps de compilation). Et dans le cas de pie, ça oblige à déclarer un type spécifique sur lequel attacher la génération de code, ce qui rend compliqué à utiliser avec des bibliothèques tierces.
Pour en revenir à la question initiale, on ne peut pas utiliser d'interface en Go pour un comportement identique entre objets car il n'y a pas de généricité, et même si le comportement est le même, les types sont différents et les types apparaissent dans la déclaration de l'interface.