Sobes.tech
Junior — Middle

Оё шумо метавонед механизмии фаъолияти намудҳои умумиро дар забони барномасозӣ шарҳ диҳед?

sobes.tech AI

Ҷавоб аз AI

Типҳои умумӣ дар барномасозӣ имкон медиҳанд, ки функсияҳо, сохторҳои маълумот ва намудҳо эҷод шаванд, ки бо намудҳои гуногуни маълумот кор мекунанд, дар ҳоле ки бехатарии намудҳоро нигоҳ медоранд. Дар забони Go (Golang), аз нусхаи 1.18, дастгирии умумӣ ворид карда шудааст.

Механизми намудҳои умумӣ имкон медиҳад, ки функсияҳо ва намудҳоро бо истифода аз параметрҳои намудӣ параметргузорӣ кунед. Ин маъно дорад, ки шумо метавонед як код нависед, ки бо намудҳои гуногуни маълумот кор мекунад, бе ниёз ба такрор кардани код барои ҳар намуд.

Масалан, функсияи умумии дар Go:

package main
import "fmt"

// Функсия, ки аввалин унсури як слайсро аз ҳар намуд бармегардонад
func First[T any](slice []T) T {
    return slice[0]
}

func main() {
    ints := []int{1, 2, 3}
    strings := []string{"a", "b", "c"}

    fmt.Println(First(ints))    // Мебарорад 1
    fmt.Println(First(strings)) // Мебарорад "a"
}

Ин ҷо, T параметри намуд аст, ки метавонад ҳар намуд бошад (any маҳдудиятест, ки ҳар намудро иҷозат медиҳад). Ҳангоми даъвати функсия, компилятор онро бо намудҳои мушаххас иваз мекунад.

Бо ҳамин роҳ, намудҳои умумӣ ба такрори коди бештар кӯмак мекунанд ва бехатарии намудҳоро таъмин мекунанд, бе аз даст додани иҷроиш.