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, οι διεπαφές υλοποιούνται αυτόματα όταν υπάρχουν οι απαραίτητες μέθοδοι.