mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2025-12-19 16:30:07 +08:00
Some checks failed
Test / test (1.20, macos-13) (push) Waiting to run
Test / test (1.20, macos-latest) (push) Waiting to run
Test / test (1.20, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.20, windows-latest) (push) Waiting to run
Test / test (1.21, macos-13) (push) Waiting to run
Test / test (1.21, macos-latest) (push) Waiting to run
Test / test (1.21, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.21, windows-latest) (push) Waiting to run
Test / test (1.22, macos-13) (push) Waiting to run
Test / test (1.22, macos-latest) (push) Waiting to run
Test / test (1.22, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.22, windows-latest) (push) Waiting to run
Test / test (1.23, macos-13) (push) Waiting to run
Test / test (1.23, macos-latest) (push) Waiting to run
Test / test (1.23, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.23, windows-latest) (push) Waiting to run
Test / test (1.24, macos-13) (push) Waiting to run
Test / test (1.24, macos-latest) (push) Waiting to run
Test / test (1.24, ubuntu-24.04-arm) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Test / test (1.20, ubuntu-latest) (push) Failing after 1s
Test / test (1.21, ubuntu-latest) (push) Failing after 1s
Test / test (1.22, ubuntu-latest) (push) Failing after 1s
Test / test (1.23, ubuntu-latest) (push) Failing after 1s
Test / test (1.24, ubuntu-latest) (push) Failing after 1s
Trigger CMFA Update / trigger-CMFA-update (push) Failing after 1s
46 lines
966 B
Go
46 lines
966 B
Go
package utils
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
func Filter[T comparable](tSlice []T, filter func(t T) bool) []T {
|
|
result := make([]T, 0)
|
|
for _, t := range tSlice {
|
|
if filter(t) {
|
|
result = append(result, t)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func Map[T any, N any](arr []T, block func(it T) N) []N {
|
|
if arr == nil { // keep nil
|
|
return nil
|
|
}
|
|
retArr := make([]N, 0, len(arr))
|
|
for index := range arr {
|
|
retArr = append(retArr, block(arr[index]))
|
|
}
|
|
return retArr
|
|
}
|
|
|
|
func ToStringSlice(value any) ([]string, error) {
|
|
strArr := make([]string, 0)
|
|
switch reflect.TypeOf(value).Kind() {
|
|
case reflect.Slice, reflect.Array:
|
|
origin := reflect.ValueOf(value)
|
|
for i := 0; i < origin.Len(); i++ {
|
|
item := fmt.Sprintf("%v", origin.Index(i))
|
|
strArr = append(strArr, item)
|
|
}
|
|
case reflect.String:
|
|
strArr = append(strArr, fmt.Sprintf("%v", value))
|
|
default:
|
|
return nil, errors.New("value format error, must be string or array")
|
|
}
|
|
return strArr, nil
|
|
}
|