Files
clash-meta/common/utils/slice.go
wwqgtxx 39d6a0d7ba
Some checks are pending
Build / build (map[abi:1 goarch:loong64 goos:linux output:loong64-abi1]) (push) Waiting to run
Build / build (map[abi:2 goarch:loong64 goos:linux output:loong64-abi2]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin goversion:1.20 output:amd64-compatible-go120]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin goversion:1.22 output:amd64-compatible-go122]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:darwin output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:freebsd output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux goversion:1.20 output:amd64-compatible-go120 test:test]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux goversion:1.23 output:amd64-compatible-go123 test:test]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:linux output:amd64-compatible test:test]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.20 output:amd64-compatible-go120]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.21 output:amd64-compatible-go121]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.22 output:amd64-compatible-go122]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows goversion:1.23 output:amd64-compatible-go123]) (push) Waiting to run
Build / build (map[goamd64:v1 goarch:amd64 goos:windows output:amd64-compatible]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin goversion:1.20 output:amd64-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin goversion:1.22 output:amd64-go122]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:darwin output:amd64]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:freebsd output:amd64]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:linux goversion:1.20 output:amd64-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:linux goversion:1.23 output:amd64-go123]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:linux output:amd64]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.20 output:amd64-go120]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.21 output:amd64-go121]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.22 output:amd64-go122]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows goversion:1.23 output:amd64-go123]) (push) Waiting to run
Build / build (map[goamd64:v3 goarch:amd64 goos:windows output:amd64]) (push) Waiting to run
Build / build (map[goarch:386 goos:android ndk:i686-linux-android34 output:386]) (push) Waiting to run
Build / build (map[goarch:386 goos:freebsd output:386]) (push) Waiting to run
Build / build (map[goarch:386 goos:linux goversion:1.20 output:386-go120]) (push) Waiting to run
Build / build (map[goarch:386 goos:linux goversion:1.23 output:386-go123]) (push) Waiting to run
Build / build (map[goarch:386 goos:linux output:386]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.20 output:386-go120]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.21 output:386-go121]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.22 output:386-go122]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows goversion:1.23 output:386-go123]) (push) Waiting to run
Build / build (map[goarch:386 goos:windows output:386]) (push) Waiting to run
Build / build (map[goarch:amd64 goos:android ndk:x86_64-linux-android34 output:amd64]) (push) Waiting to run
Build / build (map[goarch:arm goarm:5 goos:linux output:armv5]) (push) Waiting to run
Build / build (map[goarch:arm goarm:6 goos:linux output:armv6]) (push) Waiting to run
Build / build (map[goarch:arm goarm:7 goos:linux output:armv7]) (push) Waiting to run
Build / build (map[goarch:arm goos:android ndk:armv7a-linux-androideabi34 output:armv7]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:android ndk:aarch64-linux-android34 output:arm64-v8]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin goversion:1.20 output:arm64-go120]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin goversion:1.22 output:arm64-go122]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:darwin output:arm64]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:freebsd output:arm64]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:linux output:arm64]) (push) Waiting to run
Build / build (map[goarch:arm64 goos:windows output:arm64]) (push) Waiting to run
Build / build (map[goarch:mips gomips:hardfloat goos:linux output:mips-hardfloat]) (push) Waiting to run
Build / build (map[goarch:mips gomips:softfloat goos:linux output:mips-softfloat]) (push) Waiting to run
Build / build (map[goarch:mips64 goos:linux output:mips64]) (push) Waiting to run
Build / build (map[goarch:mips64le goos:linux output:mips64le]) (push) Waiting to run
Build / build (map[goarch:mipsle gomips:hardfloat goos:linux output:mipsle-hardfloat]) (push) Waiting to run
Build / build (map[goarch:mipsle gomips:softfloat goos:linux output:mipsle-softfloat]) (push) Waiting to run
Build / build (map[goarch:riscv64 goos:linux output:riscv64]) (push) Waiting to run
Build / build (map[goarch:s390x goos:linux output:s390x]) (push) Waiting to run
Build / Upload-Prerelease (push) Blocked by required conditions
Build / Upload-Release (push) Blocked by required conditions
Build / Docker (push) Blocked by required conditions
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, ubuntu-latest) (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, ubuntu-latest) (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, ubuntu-latest) (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, ubuntu-latest) (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, ubuntu-latest) (push) Waiting to run
Test / test (1.24, windows-latest) (push) Waiting to run
Trigger CMFA Update / trigger-CMFA-update (push) Waiting to run
chore: update utls to 1.7.0
2025-04-21 12:07:33 +08:00

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
}