import "github.com/zyedidia/generic"- func Clamp[T constraints.Ordered](x, lo, hi T) T
- func ClampFunc[T any](x, lo, hi T, less LessFn[T]) T
- func Compare[T any](a, b T, less LessFn[T]) int
- func Equals[T comparable](a, b T) bool
- func HashBytes(b []byte) uint64
- func HashInt(i int) uint64
- func HashInt16(i int16) uint64
- func HashInt32(i int32) uint64
- func HashInt64(i int64) uint64
- func HashInt8(i int8) uint64
- func HashString(s string) uint64
- func HashUint(i uint) uint64
- func HashUint16(u uint16) uint64
- func HashUint32(u uint32) uint64
- func HashUint64(u uint64) uint64
- func HashUint8(u uint8) uint64
- func Less[T constraints.Ordered](a, b T) bool
- func Max[T constraints.Ordered](a, b T) T
- func MaxFunc[T any](a, b T, less LessFn[T]) T
- func Min[T constraints.Ordered](a, b T) T
- func MinFunc[T any](a, b T, less LessFn[T]) T
- type EqualsFn
- type HashFn
- type LessFn
func Clamp
func Clamp[T constraints.Ordered](x, lo, hi T) TClamp returns x constrained within [lo:hi] range. If x compares less than lo, returns lo; otherwise if hi compares less than x, returns hi; otherwise returns v.
Example
package main
import (
"fmt"
"time"
"github.com/zyedidia/generic"
)
func main() {
fmt.Println(generic.Clamp(500, 400, 600))
fmt.Println(generic.Clamp(200, 400, 600))
fmt.Println(generic.Clamp(800, 400, 600))
fmt.Println(generic.Clamp(5*time.Second, 4*time.Second, 6*time.Second).Milliseconds())
fmt.Println(generic.Clamp(2*time.Second, 4*time.Second, 6*time.Second).Milliseconds())
fmt.Println(generic.Clamp(8*time.Second, 4*time.Second, 6*time.Second).Milliseconds())
fmt.Println(generic.Clamp(1.5, 1.4, 1.8))
fmt.Println(generic.Clamp(1.5, 1.8, 1.8))
fmt.Println(generic.Clamp(1.5, 2.1, 1.9))
}500
400
600
5000
4000
6000
1.5
1.8
2.1
func ClampFunc
func ClampFunc[T any](x, lo, hi T, less LessFn[T]) TClampFunc returns x constrained within [lo:hi] range using the less func. If x compares less than lo, returns lo; otherwise if hi compares less than x, returns hi; otherwise returns v.
Example
package main
import (
"fmt"
"math"
"github.com/zyedidia/generic"
)
func lessMagnitude(a, b float64) bool {
return math.Abs(a) < math.Abs(b)
}
func main() {
fmt.Println(generic.ClampFunc(1.5, 1.4, 1.8, lessMagnitude))
fmt.Println(generic.ClampFunc(1.5, 1.8, 1.8, lessMagnitude))
fmt.Println(generic.ClampFunc(1.5, 2.1, 1.9, lessMagnitude))
fmt.Println(generic.ClampFunc(-1.5, -1.4, -1.8, lessMagnitude))
fmt.Println(generic.ClampFunc(-1.5, -1.8, -1.8, lessMagnitude))
fmt.Println(generic.ClampFunc(-1.5, -2.1, -1.9, lessMagnitude))
fmt.Println(generic.ClampFunc(1.5, -1.5, -1.5, lessMagnitude))
}1.5
1.8
2.1
-1.5
-1.8
-2.1
1.5
func Compare
func Compare[T any](a, b T, less LessFn[T]) intCompare uses a less function to determine the ordering of 'a' and 'b'. It returns:
* -1 if a < b
* 1 if a > b
* 0 if a == b
func Equals
func Equals[T comparable](a, b T) boolEquals wraps the '==' operator for comparable types.
func HashBytes
func HashBytes(b []byte) uint64func HashInt
func HashInt(i int) uint64func HashInt16
func HashInt16(i int16) uint64func HashInt32
func HashInt32(i int32) uint64func HashInt64
func HashInt64(i int64) uint64func HashInt8
func HashInt8(i int8) uint64func HashString
func HashString(s string) uint64func HashUint
func HashUint(i uint) uint64func HashUint16
func HashUint16(u uint16) uint64func HashUint32
func HashUint32(u uint32) uint64func HashUint64
func HashUint64(u uint64) uint64func HashUint8
func HashUint8(u uint8) uint64func Less
func Less[T constraints.Ordered](a, b T) boolLess wraps the '<' operator for ordered types.
func Max
func Max[T constraints.Ordered](a, b T) TMax returns the max of a and b.
Example
package main
import (
"fmt"
"time"
"github.com/zyedidia/generic"
)
func main() {
fmt.Println(generic.Max(7, 3))
fmt.Println(generic.Max(2*time.Second, 3*time.Second).Milliseconds())
}7
3000
func MaxFunc
func MaxFunc[T any](a, b T, less LessFn[T]) TMaxFunc returns the max of a and b using the less func.
Example
package main
import (
"fmt"
"math"
"github.com/zyedidia/generic"
)
func lessMagnitude(a, b float64) bool {
return math.Abs(a) < math.Abs(b)
}
func main() {
fmt.Println(generic.MaxFunc(2.5, -3.1, lessMagnitude))
}-3.1
func Min
func Min[T constraints.Ordered](a, b T) TMin returns the min of a and b.
Example
package main
import (
"fmt"
"time"
"github.com/zyedidia/generic"
)
func main() {
fmt.Println(generic.Min(7, 3))
fmt.Println(generic.Min(2*time.Second, 3*time.Second).Milliseconds())
}3
2000
func MinFunc
func MinFunc[T any](a, b T, less LessFn[T]) TMinFunc returns the min of a and b using the less func.
Example
package main
import (
"fmt"
"math"
"github.com/zyedidia/generic"
)
func lessMagnitude(a, b float64) bool {
return math.Abs(a) < math.Abs(b)
}
func main() {
fmt.Println(generic.MinFunc(2.5, -3.1, lessMagnitude))
}2.5
type EqualsFn
EqualsFn is a function that returns whether 'a' and 'b' are equal.
type EqualsFn[T any] func(a, b T) booltype HashFn
HashFn is a function that returns the hash of 't'.
type HashFn[T any] func(t T) uint64type LessFn
LessFn is a function that returns whether 'a' is less than 'b'.
type LessFn[T any] func(a, b T) boolGenerated by gomarkdoc