Sobes.tech
Junior — Middle

Фарқи байни интерфейсҳо дар Golang бо дигар забонҳои барномасозӣ чист?

sobes.tech AI

Ҷавоб аз AI

Дар Го, интерфейсҳо ба принсипи иҷрои ғайрирасмӣ амал мекунанд. Ин маъно дорад, ки як навъ автоматӣ интерфейсро иҷро мекунад, агар ҳамаи усулҳое дошта бошад, ки интерфейс талаб мекунад, бе ниёз ба эълон кардани он дар код (барои муқоиса, бо Java ё C#, ки бояд эълон кард, ки интерфейсро иҷро мекунад).

Ин имкон медиҳад, ки кодро бештар чандир ва камтар пайваст нависед, зеро навъҳо ва интерфейсҳо мустақиман ба ҳам вобаста нестанд.

Масалан:

package main
import "fmt"

type Reader interface {
    Read(p []byte) (n int, err error)
}

type MyReader struct{}

func (r MyReader) Read(p []byte) (n int, err error) {
    // иҷрои хондан
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // иҷрои ғайрирасмии интерфейс
    fmt.Println(r)
}

Ҳамчунин, дар Го, ки наследияи синфҳо вуҷуд надорад, интерфейсҳо барои полиморфизм ва таркиб истифода мешаванд, ки онҳоро аз бисёри дигар забонҳо фарқ мекунад.