Junior — Middle
Care este diferența dintre interfețele în Golang comparativ cu cele din alte limbaje de programare?
sobes.tech AI
Răspuns de la AI
În Go, interfețele sunt implementate conform principiului implementării implicite. Aceasta înseamnă că un tip implementează automat o interfață dacă are toate metodele pe care interfața le cere, fără a fi nevoie să o declare explicit în cod (spre deosebire de Java sau C#, unde trebuie declarată explicit implementarea interfeței).
Acest lucru permite scrierea unui cod mai flexibil și mai puțin cuplat, deoarece tipurile și interfețele nu depind direct unul de celălalt.
Exemplu:
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) {
// implementarea citirii
return 0, nil
}
func main() {
var r Reader = MyReader{} // implementare implicită a interfeței
fmt.Println(r)
}
De asemenea, în Go nu există moștenire de clase, interfețele sunt folosite pentru polimorfism și compoziție, ceea ce le diferențiază de multe alte limbaje.