Sobes.tech
Junior — Middle

Koja je razlika između interfejsa u Golang-u i u drugim programskim jezicima?

sobes.tech АИ

Одговор од АИ

U Go, interfejsi se implementiraju prema principu implicitne implementacije. To znači da tip automatski implementira interfejs ako ima sve metode koje interfejs zahteva, bez potrebe da to eksplicitno navodi u kodu (za razliku od Jave ili C#, gde je potrebno eksplicitno deklarisati implementaciju interfejsa).

Ovo omogućava pisanje fleksibilnijeg i manje povezivog koda, jer se tipovi i interfejsi ne zavise direktno jedan od drugog.

Primer:

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) {
    // implementacija čitanja
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // implicitna implementacija interfejsa
    fmt.Println(r)
}

Takođe, u Go nema nasleđivanja klasa, interfejsi se koriste za polimorfizam i kompoziciju, što ih razlikuje od mnogih drugih jezika.