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)
}