• # Go

    Posté par . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 4.

    À 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.

    type Integer int
    type IntegerToo int
    type Coord struct {
     x int
     y int
    }
    type CoordToo struct {
     x int
     y int
    }
    func main() {
     i1 := Integer(42)
     var i2 IntegerToo
     i2 = i1 // ne compile pas
     i2 = IntegerToo(i1) // compile
     c1 := Coord{
     x: 42,
     y: 1337,
     }
     var c2 CoordToo
     c2 = c1 // ne compile pas
     c2 = CoordToo(c1) // compile
    }