You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
935 B
Go
91 lines
935 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"golang.org/x/exp/constraints"
|
|
)
|
|
|
|
// before go generics
|
|
|
|
func MinInt8(x, y int8) int8 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
func MinInt16(x, y int16) int16 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
func MinInt32(x, y int32) int32 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
func MinInt64(x, y int64) int64 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
func MinFloat32(x, y float32) float32 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
func MinFloat64(x, y float64) float64 {
|
|
if x < y {
|
|
return x
|
|
}
|
|
|
|
return y
|
|
}
|
|
|
|
// with go generics
|
|
|
|
func MinFloat[T float64 | float32](x, y T) T {
|
|
if x < y {
|
|
return x
|
|
}
|
|
return y
|
|
}
|
|
|
|
func Min[T constraints.Ordered](x, y T) T {
|
|
if x < y {
|
|
return x
|
|
}
|
|
return y
|
|
}
|
|
|
|
type Liter int
|
|
|
|
func main() {
|
|
{
|
|
var a, b int = 1, 2
|
|
fmt.Println(Min(a, b))
|
|
}
|
|
{
|
|
var a, b float64 = 3.14, 2.71
|
|
fmt.Println(Min(a, b))
|
|
}
|
|
{
|
|
var a, b Liter = 1, 2
|
|
fmt.Println(Min(a, b))
|
|
}
|
|
}
|