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