Sobes.tech
Junior — Middle

Кадом намудҳои барномасозии умумӣ дар забони Go дастрасанд?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, барномасозии умумӣ тавассути генерикҳо амалӣ мешавад, ки аз версияи 1.18 оғоз ёфтаанд. Намудҳои асосии генерикҳо дар Go дар бар мегиранд:

  • Типҳои параметрӣ (типҳои умумӣ): функсияҳо ва типҳо метавонанд параметрҳои типро қабул кунанд, ки навиштани коди умуӣ имконпазир месозад.
  • Интерфейсҳо бо маҳдудиятҳо (маҳдудиятҳои тип): талаботҳоро ба типҳои параметрҳо муқаррар мекунанд, масалан, ки тип дастгирии баъзе методҳоро дошта бошад ё ба маҷмӯи махсуси типҳо тааллуқ дошта бошад.

Масали функсияи умумӣ барои слайс:

func IndexOf[T comparable](slice []T, val T) int {
    for i, v := range slice {
        if v == val {
            return i
        }
    }
    return -1
}

Ин ҷо, T параметри типи маҳдудшуда бо интерфейси comparable аст, ки истифодаи оператори ==-ро имконпазир месозад. Ин функсия барои ҳама гуна типҳои муқоисаёбанда умуст.

Тавре ки, Go генерикҳоро тавассути параметризаи типҳо ва маҳдудиятҳо дастгирӣ мекунад, ки ин қобилияти чандирӣ ва такрории истифодаи коди бештарро таъмин мекунад.