Si tu veux changer ça, avoir à la fois du polymorphisme, de l'inférence de type et de l'héritage, à priori, c'est impossible. On ne peut avoir que 2 des 3. Je serais curieux de voir un langage sans héritage, pour voir.
Golang n'a pas d'heritage.
Il ont une approche basé sur de la composition anonyme et de l'interfaçage structurel.
Et si ça a l'air louche au premier abord, je trouve leur approche TRES puissante à l'usage.
Primo, ça permet de definir des methodes dans des classes défini dans des modules externes, de la même manière que les "traits" dans Rust.
Secondo, la composition anonyme autorise une approche "Mixin", en ayant l'avantage de l'heritage multiple sans avoir les problèmes de l'heritage en Diamant.
Tertio, l'utilisation de go-pointer comme composant anonyme autorise de se rapprocher de ce qu'on peut faire dans un langage à prototype: Tu crée un objet depuis un objet.
ça te permet de garder sa contextualisation, son interface et de l'étendre de manière dynamique.
[^] # Re: simple ?
Posté par Firwen (site web personnel) . En réponse au journal Rust en version 0.12. Évalué à 2. Dernière modification le 15 octobre 2014 à 17:17.
Golang n'a pas d'heritage.
Il ont une approche basé sur de la composition anonyme et de l'interfaçage structurel.
Et si ça a l'air louche au premier abord, je trouve leur approche TRES puissante à l'usage.
Primo, ça permet de definir des methodes dans des classes défini dans des modules externes, de la même manière que les "traits" dans Rust.
Secondo, la composition anonyme autorise une approche "Mixin", en ayant l'avantage de l'heritage multiple sans avoir les problèmes de l'heritage en Diamant.
Tertio, l'utilisation de go-pointer comme composant anonyme autorise de se rapprocher de ce qu'on peut faire dans un langage à prototype: Tu crée un objet depuis un objet.
ça te permet de garder sa contextualisation, son interface et de l'étendre de manière dynamique.