Sobes.tech
Junior — Middle

Koja je veza između praznog interfejsa i običnog interfejsa u programiranju?

sobes.tech АИ

Одговор од АИ

U Go-u, prazan interfejs interface{} je interfejs koji ne sadrži nijednu metodu. Može da čuva vrednost bilo kog tipa, jer svi tipovi podrazumevano implementiraju prazan interfejs. Običan interfejs, s druge strane, definiše skup metoda koje tip mora implementirati da bi odgovarao tom interfejsu.

Na taj način, odnos između praznog i običnog interfejsa u Go-u je taj što je prazan interfejs univerzalni kontejner za vrednosti bilo kog tipa, dok običan interfejs postavlja ugovor koji moraju da poštuju određeni tipovi. Prazan interfejs se često koristi za skladištenje i prenos podataka bez specifičnog tipa, dok obični interfejsi služe za definisanje ponašanja objekata.

Primer:

var any interface{} = 42 // prazan interfejs može da čuva bilo koju vrednost

// Običan interfejs
type Reader interface {
    Read(p []byte) (n int, err error)
}

// Tip koji implementira Reader
type File struct {}
func (f File) Read(p []byte) (int, error) {
    // implementacija
    return 0, nil
}

var r Reader = File{} // File implementira interfejs Reader