这个主要是处理slice,数组等,欢迎补充和点赞。
判断元素在slice中的另一种方法
代码语言:javascript复制func main() {
var keys = []string{"key", "test"}
var isIn bool
strTmp := strings.Join(keys, "|")
fmt.Println(strTmp)
if strings.Contains(strTmp, "key") {
isIn = true
}
fmt.Println(isIn)
}
任意元素判断是否存在slice中
推荐使用基础类型,也就是使用下面的变种类型
代码语言:javascript复制/**
元素是否在slice中
如果在exists返回true, index返回第几个元素
*/
func InArray(val interface{}, array interface{}) (exists bool, index int) {
exists = false
index = -1
switch reflect.TypeOf(array).Kind() {
case reflect.Slice:
s := reflect.ValueOf(array)
for i := 0; i < s.Len(); i {
if reflect.DeepEqual(val, s.Index(i).Interface()) == true {
index = i
exists = true
return
}
}
}
return
}
string 类型
代码语言:javascript复制/**
字符串是否在slice中
如果在exists返回true, index返回第几个元素
*/
func InArrayString(val string, array []string) (exists bool, index int) {
exists = false
index = -1;
for i, v := range array {
if val == v {
index = i
exists = true
return
}
}
return
}
int 类型
代码语言:javascript复制/**
字符串是否在slice中
如果在exists返回true, index返回第几个元素
*/
func InArrayInt(val int, array []int) (exists bool, index int) {
exists = false
index = -1;
for i, v := range array {
if val == v {
index = i
exists = true
return
}
}
return
}
删除指定元素
代码语言:javascript复制//删除指定items,并且可以删除重复id
func SliceRemove(slice []string, value string) (result []string) {
index := 0
endIndex := len(slice) -1
for k, v := range slice {
if v == value {
result = append(result, slice[index:k]...)
index = k 1
}
if k == endIndex {
result = append(result, slice[index:]...)
}
}
fmt.Println("result:===",result)
return
}