Sobes.tech
Junior — Middle

Kāda ir atšķirība starp Go valodas saskarni un citās programmēšanas valodās saskarnēm?

sobes.tech AI

Atbilde no AI

Go valodā interfeisi atšķiras ar to, ka tie ir netieši — tips nav jānorāda tieši, ka tas realizē interfeisu. Ja tips satur visas interfeisa metodes, tas automātiski tiek uzskatīts par tā realizāciju.

Tas atšķiras no daudziem citiem valodām, kur ir nepieciešams tieši deklarēt, ka klase vai tips realizē interfeisu.

Piemērs:

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) {
    // metodes realizācija
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // File automātiski realizē Reader
    fmt.Println(r)
}