mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package obiutils
|
|
|
|
// Contains checks if the given element is present in the given array.
|
|
//
|
|
// Parameters:
|
|
// - arr: The array to search in.
|
|
// - x: The element to search for.
|
|
//
|
|
// Return type:
|
|
// - bool: Returns true if the element is found, false otherwise.
|
|
func Contains[T comparable](arr []T, x T) bool {
|
|
for _, v := range arr {
|
|
if v == x {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// LookFor searches for the first occurrence of a given element in an array and returns its index.
|
|
//
|
|
// Parameters:
|
|
// - arr: the array to be searched
|
|
// - x: the element to search for
|
|
//
|
|
// Return:
|
|
// - int: the index of the first occurrence of the element in the array, or -1 if not found
|
|
func LookFor[T comparable](arr []T, x T) int {
|
|
for i, v := range arr {
|
|
if v == x {
|
|
return i
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
|
|
// RemoveIndex removes an element at a specified index from a slice.
|
|
//
|
|
// Parameters:
|
|
// - s: The slice from which the element will be removed.
|
|
// - index: The index of the element to be removed.
|
|
//
|
|
// Returns:
|
|
// A new slice with the element removed.
|
|
func RemoveIndex[T comparable](s []T, index int) []T {
|
|
return append(s[:index], s[index+1:]...)
|
|
}
|
|
|
|
// Reverse reverses the elements of a slice.
|
|
//
|
|
// The function takes a slice `s` and a boolean `inplace` parameter. If `inplace`
|
|
// is `true`, the function modifies the input slice directly. If `inplace` is
|
|
// `false`, the function creates a new slice `c` and copies the elements of `s`
|
|
// into `c`. The function then reverses the elements of `s` in-place or `c`
|
|
// depending on the `inplace` parameter.
|
|
//
|
|
// The function returns the reversed slice.
|
|
func Reverse[S ~[]E, E any](s S, inplace bool) S {
|
|
if !inplace {
|
|
c := make([]E, len(s))
|
|
copy(c, s)
|
|
s = c
|
|
}
|
|
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
|
|
s[i], s[j] = s[j], s[i]
|
|
}
|
|
|
|
return s
|
|
}
|