Sobes.tech
Junior — Middle

Quelle est la différence entre les interfaces en Golang par rapport à celles dans d'autres langages de programmation?

sobes.tech IA

Réponse de l'IA

En Go, les interfaces sont implémentées selon le principe d'implémentation implicite. Cela signifie qu'un type implémente automatiquement une interface s'il possède toutes les méthodes requises par cette interface, sans avoir besoin de le déclarer explicitement dans le code (contrairement à Java ou C#, où il faut déclarer explicitement l'implémentation de l'interface).

Cela permet d'écrire un code plus flexible et moins couplé, car les types et les interfaces ne dépendent pas directement les uns des autres.

Exemple:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type MyReader struct{}

func (r MyReader) Read(p []byte) (n int, err error) {
    // implémentation de la lecture
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // implémentation implicite de l'interface
    fmt.Println(r)
}

Aussi, en Go, il n'y a pas d'héritage de classes, les interfaces sont utilisées pour le polymorphisme et la composition, ce qui les distingue de beaucoup d'autres langages.