56 lines
726 B
Go
56 lines
726 B
Go
package utils
|
|
|
|
func Ptr[T any](v T) *T {
|
|
return &v
|
|
}
|
|
|
|
func ValueOrZero[T any](v *T) T {
|
|
if v == nil {
|
|
return *new(T)
|
|
} else {
|
|
return *v
|
|
}
|
|
}
|
|
|
|
func Slice[T any](v ...T) []T {
|
|
return v
|
|
}
|
|
|
|
func Exists[T comparable](v []T, el T) bool {
|
|
for _, e := range v {
|
|
if e == el {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func ExistsMap[T any, U comparable](v []T, el U, mapper func(T) U) bool {
|
|
for _, e := range v {
|
|
mapped := mapper(e)
|
|
if mapped == el {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func FindMap[T any, U comparable](v []T, el U, mapper func(T) U) *T {
|
|
for _, e := range v {
|
|
mapped := mapper(e)
|
|
if mapped == el {
|
|
return &e
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func Must(err error) {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|