Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ της διεπαφής στη γλώσσα Go και των διεπαφών σε άλλες γλώσσες προγραμματισμού;

sobes.tech AI

Απάντηση από AI

Στη γλώσσα προγραμματισμού Go, οι διεπαφές διαφέρουν στο ότι είναι έμμεσες — ο τύπος δεν χρειάζεται να δηλώσει ρητά ότι υλοποιεί τη διεπαφή. Αν ένας τύπος περιέχει όλες τις μεθόδους της διεπαφής, θεωρείται αυτόματα ότι την υλοποιεί.

Αυτό διαφέρει από πολλές άλλες γλώσσες, όπου πρέπει να δηλωθεί ρητά ότι μια κλάση ή τύπος υλοποιεί μια διεπαφή.

Παράδειγμα:

package main
import "fmt"

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

type File struct {}

func (f File) Read(p []byte) (n int, err error) {
    // υλοποίηση της μεθόδου
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // Το File υλοποιεί αυτόματα το Reader
    fmt.Println(r)
}