Junior — Middle
Агар структураи додаҳо дар барномасозии объектӣ-интихобӣ интерфейси додаҳоро иҷро накунад, чӣ оқибатҳо ба вуҷуд меоянд?
sobes.tech AI
Ҷавоб аз AI
Дар Go интерфейсҳо ғайримушаххас татбиқ мешаванд: агар структура ҳамаи усулҳои интерфейсро дар бар гирад, он онро татбиқ мекунад. Агар структура интерфейси муайянро татбиқ накунад:
- Компилятор дар кӯшиши истифодаи ин структура ҳамчун арзиши навъи интерфейс хато медиҳад.
- Ин аз хатоҳои вақти иҷроӣ пешгирӣ мекунад, зеро Go қатъӣ мувофиқати бо интерфейсҳоро дар вақти компилятсия тафтиш мекунад.
Масалан, агар шумо интерфейси зерин дошта бошед:
type Reader interface {
Read(p []byte) (n int, err error)
}
Ва структура:
type MyStruct struct {}
// Методи Read вуҷуд надорад, бинобар ин MyStruct Reader-ро татбиқ намекунад
Кӯшиши таъин кардани MyStruct ба тағйирёбандаи навъи Reader хато дар компилятсия ба вуҷуд меорад.
Бинобар ин, агар структура интерфейсиро татбиқ накунад, шумо наметавонед онро дар ҷойҳое, ки интизор меравад, истифода баред, ки кӯмак мекунад, то хатоҳои мантиқӣ дар барнома пешгирӣ шаванд.