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

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

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

sobes.tech AI

В Go (Golang) универсальный или обобщённый код можно реализовать с помощью дженериков, которые появились начиная с версии 1.18. Они позволяют писать функции и типы, работающие с разными типами данных без дублирования кода.

Пример обобщённой функции для поиска максимума в срезе:

package main

import (
    "fmt"
    "golang.org/x/exp/constraints"
)

func Max[T constraints.Ordered](slice []T) T {
    max := slice[0]
    for _, v := range slice[1:] {
        if v > max {
            max = v
        }
    }
    return max
}

func main() {
    ints := []int{1, 5, 3}
    floats := []float64{2.5, 3.7, 1.4}

    fmt.Println(Max(ints))   // 5
    fmt.Println(Max(floats)) // 3.7
}

Другие методы универсализации включают использование интерфейсов, но дженерики дают более строгую типизацию и удобство.