Sobes.tech
Назад к вопросам
Junior — Middle
78

Какие методы и инструменты ты знаешь для реализации обобщенного программирования в своих проектах?

Компании, где спрашивали
Digital Spirit

Ответ от нейросети

sobes.tech AI

В Go для реализации обобщённого программирования используются дженерики, которые появились начиная с версии Go 1.18.

Основные инструменты и методы:

  • Параметризованные типы (generics) — позволяют писать функции, структуры и методы, которые работают с разными типами данных, не дублируя код.
  • Интерфейсы с ограничениями (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
}

До появления дженериков часто использовали интерфейс{} и приведение типов, но это менее безопасно и менее эффективно.