À ma connaissance, seuls les langages fonctionnels typés offrent cette possibilité de différencier des types structurellement identiques, autrement qu'en faisant des classes.
En Go, les types qui ont la même structure ne sont pas synonymes, mais on peut transtyper très facilement. C’est effectivement très pratique pour vérifier qu’on écrit bien ce qu’on veut dire, mais parfois quelque peu pénible, par exemple quand on doit tout le temps passer de []byte à string et vice versa, ou quand les types deviennent un peu compliqués.
typeIntegerinttypeIntegerToointtypeCoordstruct{xintyint}typeCoordToostruct{xintyint}funcmain(){i1:=Integer(42)vari2IntegerTooi2=i1// ne compile pasi2=IntegerToo(i1)// compilec1:=Coord{x:42,y:1337,}varc2CoordTooc2=c1// ne compile pasc2=CoordToo(c1)// compile}
# Go
Posté par ɹǝıʌıʃO . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 4.
En Go, les types qui ont la même structure ne sont pas synonymes, mais on peut transtyper très facilement. C’est effectivement très pratique pour vérifier qu’on écrit bien ce qu’on veut dire, mais parfois quelque peu pénible, par exemple quand on doit tout le temps passer de []byte à string et vice versa, ou quand les types deviennent un peu compliqués.