Sobes.tech
Junior — Middle

Дар барномасозӣ чӣ фарқият байни интерфейсҳо ва намудҳои умумӣ вуҷуд дорад؟

sobes.tech AI

Ҷавоб аз AI

Интерфейсҳо ва намудҳои умумӣ вазифаҳои гуногунро дар барноманависӣ иҷро мекунанд:

  • Интерфейсҳо маҷмӯи усулҳоро тавсиф мекунанд, ки як навъи муайян бояд иҷро кунад. Онҳо имкон медиҳанд, ки бо намудҳои гуногун тавассути шартномаи умумӣ кор кунанд, ки полиморфизмро таъмин мекунад. Масалан, интерфейси Reader дар Go усули Read()-ро муайян мекунад, ва ҳар навъе, ки ин усулро иҷро мекунад, метавонад ҳамчун Reader истифода шавад.

  • Намудҳои умумӣ имкон медиҳанд, ки функсияҳо ва сохторҳо навъҳои гуногуни маълумотро коркард кунанд, ҳангоми нигоҳ доштани бехатарии навъ. Онҳо намунаҳои параметрӣ мебошанд, ки дар вақти истифода барои навъҳои мушаххас компилятсия мешаванд.

Масалан дар Go:

// Интерфейс
 type Reader interface {
     Read(p []byte) (n int, err error)
 }

// Функсияи умумӣ
 func PrintSlice[T any](s []T) {
     for _, v := range s {
         fmt.Println(v)
     }
 }

Бинобар ин, интерфейсҳо рафторро муайян мекунанд, ва намудҳои умумӣ универсалиятро дар коди барои намудҳои гуногун пешниҳод мекунанд.