Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

Παράδειγμα:

package main

import "fmt"

type Speaker interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Γαβ!"
}

func main() {
    var s Speaker
    d := Dog{}
    s = d // Dog υλοποιεί τη διεπαφή Speaker
    fmt.Println(s.Speak())
}

Αν θέλετε να ελέγξετε ρητά αν ένας τύπος υλοποιεί μια διεπαφή, μπορείτε να χρησιμοποιήσετε έλεγχο μεταγλώττισης:

var _ Speaker = (*Dog)(nil) // Ο μεταγλωττιστής θα ελέγξει αν το *Dog υλοποιεί το Speaker

Έτσι, στη Go, οι διεπαφές υλοποιούνται αυτόματα όταν υπάρχουν οι απαραίτητες μέθοδοι.