golang 删除切片的某个元素以及剔除切片内的零值

func remove(slice []interface{}, elem interface{}) []interface{}{
    if len(slice) == 0 {
        return slice
    }
    for i, v := range slice {
        if v == elem {
            slice = append(slice[:i], slice[i+1:]...)
            return remove(slice,elem)
            break
        }
    }
    return slice
}

func removeZero(slice []interface{}) []interface{}{
    if len(slice) == 0 {
        return slice
    }
    for i, v := range slice {
        if ifZero(v) {
            slice = append(slice[:i], slice[i+1:]...)
            return removeZero(slice)
            break
        }
    }
    return slice
}

func ifZero(arg interface{}) bool {
switch v := arg.(type) {
case int, float64, int32, int16, int64, float32:
if v == 0 {
return true
}
case string:
if v == “” || v == “%%” {
return true
}
default:
return false
}
return false
}

猜你喜欢

转载自blog.csdn.net/fwhezfwhez/article/details/79931415