Sobes.tech
Junior — Middle

Go тилиндеги интерфейс менен башка программалоо тилдериндеги интерфейстердин айырмасы эмнеде?

sobes.tech AI

AIден жооп

Go тилинде интерфейстер айырмаланат, анткени алар жасалма — түрү интерфейсти ачык көрсөтүшү керек эмес. Эгер түр бардык методдорду камтыса, ал автоматтык түрдө анын ишке ашырылышы деп эсептелет.

Бул көптөгөн башка тилдерден айырмаланат, анда класс же түр интерфейсти ишке ашырганын ачык билдирүү керек.

Мисал:

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) {
    // методтун ишке ашырылышы
    return 0, nil
}

func main() {
    var r Reader
    var f File
    r = f // File автоматтык түрдө Readerди ишке ашырат
    fmt.Println(r)
}