// *** before: ***
// интерфейс требовал только методы, а не операторы вроде +,
// поэтому обобщённую арифметику пришлось бы писать через reflect
// *** in version 1.18: ***
type Number interface {
~int | ~int64 | ~float64
}
func Sum[T Number](nums []T) T {
var total T
for _, n := range nums {
total += n
}
return total
}
type Meters float64
fmt.Println(Sum([]Meters{1.5, 2.5})) // ~float64 разрешает и свои типы поверх
//float64