Sobes.tech
Junior — Middle

Obyekt yönümlü proqramlaşdırmada verilən interfeysi həyata keçirməyən məlumat strukturu hansı nəticələrə gətirib çıxarır?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da interfeysler qeyri-adi olaraq həyata keçirilir: əgər struktur bütün interfeys metodlarını ehtiva edirsə, onu həyata keçirir. Əgər struktur verilmiş interfeysi həyata keçirməzsə:

  • Bu strukturun interfeys tipi kimi istifadə edilməyə çalışıldığında tərtibçi səhv verəcək.
  • Bu, işləmə vaxtında səhvlərin qarşısını alır, çünki Go tərtib zamanı interfeyslərlə uyğunluğu ciddi şəkildə yoxlayır.

Məsələn, əgər sizdə aşağıdakı interfeys varsa:

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

Və struktur:

type MyStruct struct {}

// Read metodu yoxdur, ona görə də MyStruct Reader-i həyata keçirmir

MyStruct-ı Reader tipli dəyişənə təyin etməyə cəhd etmək tərtibçi səhvi ilə nəticələnəcək.

Beləliklə, əgər struktur interfeysi həyata keçirməzsə, onu bu interfeysin gözlənildiyi yerdə istifadə edə bilməzsiniz, bu da məntiqi səhvlərin qarşısını almağa kömək edir.