Sobes.tech
Senior

Τι είναι τα interfaces στο Go; Πώς υλοποιούν οι τύποι τα interfaces;

sobes.tech AI

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

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

Αυτό ονομάζεται άτυπη υλοποίηση διεπαφών. Χάρη σε αυτό, μπορούμε να γράψουμε πιο ευέλικτο και επεκτάσιμο κώδικα.

Παράδειγμα:

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
    f := File{}
    r = f // Το File υλοποιεί το Reader
    fmt.Println(r)
}

Εδώ, ο τύπος File υλοποιεί το interface Reader επειδή έχει μια μέθοδο Read με την απαιτούμενη υπογραφή.