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

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 @   技术颜良  阅读(67)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2021-04-16 Docker 和 Kubernetes:root 与特权
2021-04-16 DRBD详细解说及配置过程记录
2021-04-16 MySQL 高可用方案-PXC环境部署记录
2021-04-16 MySQL高可用方案
2021-04-16 xtrabackup命令用法实战
2021-04-16 xtrabackup 使用说明(
2021-04-16 xtraback工具的使用和备份
点击右上角即可分享
微信分享提示