master > master: codego initialisiert
This commit is contained in:
84
codego/core/utils/utils.go
Normal file
84
codego/core/utils/utils.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
/* ---------------------------------------------------------------- *
|
||||
* EXPORTS
|
||||
* ---------------------------------------------------------------- */
|
||||
|
||||
func StrListContains(list []string, x string) bool {
|
||||
for _, obj := range list {
|
||||
if obj == x {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func Min2(x int, y int) int {
|
||||
if x <= y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func Max2(x int, y int) int {
|
||||
if x >= y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func SortStrings(list *[]string) {
|
||||
sort.Slice(*list, func(i int, j int) bool {
|
||||
u := strings.ToLower((*list)[i])
|
||||
v := strings.ToLower((*list)[j])
|
||||
cmp := strings.Compare(u, v)
|
||||
return (cmp < 0)
|
||||
})
|
||||
}
|
||||
|
||||
func FilterStrings(list *[]string, f func(string) bool) []string {
|
||||
var listFiltered = []string{}
|
||||
for _, val := range *list {
|
||||
if f(val) {
|
||||
listFiltered = append(listFiltered, val)
|
||||
}
|
||||
}
|
||||
return listFiltered
|
||||
}
|
||||
|
||||
func UnionStrings2(list1 []string, list2 []string) []string {
|
||||
var mark = make(map[string]bool)
|
||||
for _, item := range list1 {
|
||||
mark[item] = true
|
||||
}
|
||||
for _, item := range list2 {
|
||||
mark[item] = true
|
||||
}
|
||||
var list = make([]string, len(mark))
|
||||
var i int = 0
|
||||
for item, _ := range mark {
|
||||
list[i] = item
|
||||
i++
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func UnionStringsTo(listTo *[]string, listFrom []string) {
|
||||
var mark = make(map[string]bool)
|
||||
for _, item := range listFrom {
|
||||
mark[item] = true
|
||||
}
|
||||
for _, item := range *listTo {
|
||||
mark[item] = false // signals suppression of duplicate addition
|
||||
}
|
||||
for item, isNew := range mark {
|
||||
if isNew {
|
||||
*listTo = append(*listTo, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user