切片指针跟指针切片的循环注意事项(重要)

package main

import "fmt"

func main() {
//var x,y,z = 1,2,3
var s []*int = []*int{new(int)}

for i:=range s {
fmt.Println(*s[i]) //s=nil会报错,空指针不可取值 = 0
}
var l *[]int

l=&[]int{1,2,3}
*l= append(*l, *l...)

for _,x:=range (*l) {
fmt.Println(x) // 被引用 1,2,3 1,2,3

}

}


package main

import "fmt"

func RemoveSlicStr(o []string,p string) []string { //单个切片切割,浅拷贝

for i:=0;i<len(o);i++{
if o[i] == p {
o = append(o[:i], o[i+1:]...)
i--

}
}
return o

}

func main() {
o:=[]string{"cheyunhua","che"}
fmt.Println(RemoveSlicStr(o,"che"))


}
package main

import "fmt"

func RemoveSlicStr(o []string,p string) (n []string) { //比较消耗资源,引用类型,深

for i,v:=range o{
if o[i] != p {
n = append(n, v)
return n



}
}
return

}

func main() {
o:=[]string{"cheyunhua","che"}
fmt.Println(RemoveSlicStr(o,"che"))


}

//结果
0
1
2
3
1
2
3

 

 

 

func DemoRemoveDubb(o,n []string)  []string{
var l []string


m:=map[string]int{}
for _,v:=range o{
m[v]++
}
for _,x:=range n{
m[x]++
if m[x] > 1{
l=append(l, x)
//return l //返回等于 [cheyunhua】不对

}

}
return l

}



func main() {
o:=[]string{"cheyunhua","test","ffdsf"}
n:=[]string{"cheyunhua","test","xxx"}
fmt.Println(DemoRemoveDubb(o,n))



}



//
[cheyunhua test]
posted @ 2022-04-16 17:11  技术颜良  阅读(64)  评论(0编辑  收藏  举报