slice uitl 笔记

2019-07-22 17:25:40 浏览数 (1)

这个主要是处理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
}

0 人点赞