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) T
Clamp 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]) T
ClampFunc 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]) int
Compare 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) bool
Equals wraps the '==' operator for comparable types.
func HashBytes
func HashBytes(b []byte) uint64
func HashInt
func HashInt(i int) uint64
func HashInt16
func HashInt16(i int16) uint64
func HashInt32
func HashInt32(i int32) uint64
func HashInt64
func HashInt64(i int64) uint64
func HashInt8
func HashInt8(i int8) uint64
func HashString
func HashString(s string) uint64
func HashUint
func HashUint(i uint) uint64
func HashUint16
func HashUint16(u uint16) uint64
func HashUint32
func HashUint32(u uint32) uint64
func HashUint64
func HashUint64(u uint64) uint64
func HashUint8
func HashUint8(u uint8) uint64
func Less
func Less[T constraints.Ordered](a, b T) bool
Less wraps the '<' operator for ordered types.
func Max
func Max[T constraints.Ordered](a, b T) T
Max 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]) T
MaxFunc 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) T
Min 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]) T
MinFunc 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) bool
type HashFn
HashFn is a function that returns the hash of 't'.
type HashFn[T any] func(t T) uint64
type LessFn
LessFn is a function that returns whether 'a' is less than 'b'.
type LessFn[T any] func(a, b T) bool
Generated by gomarkdoc