Sobes.tech
Junior — Middle

Qual è la differenza tra le interfacce in Golang rispetto a quelle in altri linguaggi di programmazione?

sobes.tech AI

Risposta dell'AI

In Go, le interfacce vengono implementate secondo il principio dell'implementazione implicita. Ciò significa che un tipo implementa automaticamente un'interfaccia se ha tutti i metodi richiesti dall'interfaccia, senza doverlo dichiarare esplicitamente nel codice (a differenza di Java o C#, dove è necessario dichiarare esplicitamente l'implementazione dell'interfaccia).

Questo permette di scrivere codice più flessibile e meno accoppiato, poiché i tipi e le interfacce non dipendono direttamente l'uno dall'altro.

Esempio:

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) {
    // implementazione della lettura
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // implementazione implicita dell'interfaccia
    fmt.Println(r)
}

Inoltre, in Go non esiste ereditarietà di classi, le interfacce sono usate per il polimorfismo e la composizione, il che le distingue da molte altre lingue.