github.com/eframework-cn/EP.GO.UTIL@v1.0.0/xcollect/generic.txt (about) 1 //-----------------------------------------------------------------------// 2 // GNU GENERAL PUBLIC LICENSE // 3 // Version 2, June 1991 // 4 // // 5 // Copyright (C) EFramework, https://eframework.cn, All rights reserved. // 6 // Everyone is permitted to copy and distribute verbatim copies // 7 // of this license document, but changing it is not allowed. // 8 // SEE LICENSE.md FOR MORE DETAILS. // 9 //-----------------------------------------------------------------------// 10 11 package xcollect 12 13 // 从数组中索引元素,ele为元素 14 func IndexFor[T byte | uint16 | uint32 | uint64 | 15 int | int8 | int16 | int32 | int64 | 16 float32 | float64 | string](arr []T, ele T) int { 17 if arr != nil { 18 for k, v := range arr { 19 if v == ele { 20 return k 21 } 22 } 23 } 24 return -1 25 } 26 27 // 判断数组是否存在元素,ele为元素 28 func ContainsFor[T byte | uint16 | uint32 | uint64 | 29 int | int8 | int16 | int32 | int64 | 30 float32 | float64 | string](arr []T, ele T) bool { 31 if arr != nil { 32 return IndexFor(arr, ele) >= 0 33 } 34 return false 35 } 36 37 // 从数组中移除元素,ele为元素 38 func RemoveFor[T byte | uint16 | uint32 | uint64 | 39 int | int8 | int16 | int32 | int64 | 40 float32 | float64 | string](arr []T, ele T) []T { 41 if arr != nil { 42 for { 43 idx := IndexFor(arr, ele) 44 if idx >= 0 { 45 arr = append(arr[:idx], arr[idx+1:]...) 46 } else { 47 break 48 } 49 } 50 } 51 return arr 52 } 53 54 // 从数组中移除元素,ele为索引 55 func DeleteFor[T byte | uint16 | uint32 | uint64 | 56 int | int8 | int16 | int32 | int64 | 57 float32 | float64 | string](arr []T, ele int) []T { 58 if arr != nil { 59 if ele < len(arr) { 60 arr = append(arr[:ele], arr[ele+1:]...) 61 } 62 } 63 return arr 64 } 65 66 // 在数组中新增元素,ele为元素 67 func AppendFor[T byte | uint16 | uint32 | uint64 | 68 int | int8 | int16 | int32 | int64 | 69 float32 | float64 | string](arr []T, ele T) []T { 70 return append(arr, ele) 71 }