Sobes.tech
Junior — Middle

Кадом усулҳо ва воситаҳоро барои иҷрои барномасозии умумӣ дар лоиҳаҳои худ медонед?

sobes.tech AI

Ҷавоб аз AI

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

Асосӣ асбобҳо ва усулҳо:

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

Масали функсия бо генерикҳо:

package main
import "fmt"

func SumIntsOrFloats[T int | float64](slice []T) T {
    var sum T
    for _, v := range slice {
        sum += v
    }
    return sum
}

func main() {
    ints := []int{1, 2, 3}
    floats := []float64{1.1, 2.2, 3.3}
    fmt.Println(SumIntsOrFloats(ints))   // 6
    fmt.Println(SumIntsOrFloats(floats)) // 6.6
}

Пеш аз пайдоиши генерикҳо, одатан аз интерфейс{} ва табдили намудҳо истифода мешуд, ки ин камтар бехатар ва камтар самаранок аст.