Sobes.tech
Junior — Middle

Jaka jest różnica między interfejsem w języku Go a interfejsami w innych językach programowania?

sobes.tech AI

Odpowiedź od AI

W języku Go interfejsy różnią się tym, że są niejawne — typ nie musi jawnie wskazywać, że implementuje interfejs. Jeśli typ zawiera wszystkie metody interfejsu, jest automatycznie uważany za jego implementację.

To różni się od wielu innych języków, w których konieczne jest jawne deklarowanie, że klasa lub typ implementuje interfejs.

Przykład:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type File struct {}

func (f File) Read(p []byte) (n int, err error) {
    // implementacja metody
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // File automatycznie implementuje Reader
    fmt.Println(r)
}