Sobes.tech
Junior — Middle

Milline erinevus on Go keele liidesel võrreldes teiste programmeerimiskeelte liidestega?

sobes.tech AI

Vastus AI-lt

Go keeles erinevad liidesed selle poolest, et need on varjatud — tüüp ei pea otseselt näitama, et ta liidest implementeerib. Kui tüüp sisaldab kõiki liidese meetodeid, loetakse ta automaatselt selleks.

See erineb paljudest teistest keeltest, kus on vaja otseselt deklareerida, et klass või tüüp liidest implementeerib.

Näide:

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) {
    // meetodi implementatsioon
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // File implementeerib automaatselt Readeri
    fmt.Println(r)
}