运行代码看一下结果:
func elementIsInSlice(element int, slice []int)( int ,[]int){
if len(slice) == 0 {
return 0,slice
}
var f int
for i, item := range slice{
if element == item{
slice = append(slice[:i], slice[i+1:]...)
f =f+1
}
}
fmt.Println("=====slice:",slice)
return f, slice
}
func main() {
var slice1 = []int{1,3,5,3,7,9}
//var slice2 =[]int{8,6,3,12}
fmt.Println("======1:",slice1)
b1,isIn := elementIsInSlice(3, slice1)
fmt.Println("====elements1:",slice1)
b2,isIn2 := elementIsInSlice(10, isIn)
fmt.Println("====elements2:",slice1)
fmt.Println("========b1:",b1)
fmt.Println("========b2:",b2)
fmt.Println("isIn =", isIn)
fmt.Println("isIn2 =", isIn2)
}
结果:
为什么这里elements1的结果后面会多出两个9呢?
这个问题你得先了解一下slice的结构组成: len 和cap
当程序走到elements时 , len :4 cap :6
你品 细品...
怀疑博主有错误的地方,请留言。