Вопрос: Как работают generics в Go (type parameters) на базовом уровне?
Go
Junior
Без компании
Вопрос: Как работают generics в Go (type parameters) на базовом уровне?
Ответы
Generics позволяют писать функции/типы с параметрами типов. Ограничения задаются через интерфейсы (constraints).
Пример: max для ordered типов
```go
package main
import "fmt"
type Ordered interface {
~int | ~int64 | ~float64 | ~string
}
func Max[T Ordered](a, b T) T {
if a > b {
return a
}
return b
}
func main() {
fmt.Println(Max(10, 20))
fmt.Println(Max("a", "b"))
}
```
~int означает "тип с базовым типом int" (например, кастомный type MyInt int).