Назад к вопросам
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
}
Другие методы универсализации включают использование интерфейсов, но дженерики дают более строгую типизацию и удобство.