Исходники и презентации
This commit is contained in:
32
lessons/generics_and_reflection/max_generic/main.go
Normal file
32
lessons/generics_and_reflection/max_generic/main.go
Normal file
@ -0,0 +1,32 @@
|
||||
package main
|
||||
|
||||
// constraint
|
||||
type Signed interface {
|
||||
int | int8 | int16 | int32 | int64
|
||||
}
|
||||
|
||||
// constraint
|
||||
type Unsigned interface {
|
||||
uint | uint8 | uint16 | uint32 | uint64
|
||||
}
|
||||
|
||||
// constraint
|
||||
type Integer interface {
|
||||
Signed | Unsigned
|
||||
}
|
||||
|
||||
func Max[T Integer](lhs, rhs T) T {
|
||||
if lhs >= rhs {
|
||||
return lhs
|
||||
} else {
|
||||
return rhs
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
var lhs1, rhs1 int = 10, 20
|
||||
_ = Max[int](lhs1, rhs1)
|
||||
|
||||
var lhs2, rhs2 uint = 10, 20
|
||||
_ = Max[uint](lhs2, rhs2)
|
||||
}
|
||||
Reference in New Issue
Block a user