关于golang slice append的使用
来源:5-3 runner的生产消费者模型实现
白小九jiu
2020-07-03
西西老师好,我在进行golang slice操作的使用时,遇到了这样一个问题
如图,代码是对 temp 里的字符串进行匹配,如果等于 “foo” 的话,打印去掉这个字符串后的数组ret,但是我不希望 temp 的值发生改变,可是运行代码发现 temp 的值改变了,应该是在执行 append 的时候,我不能理解为什么 temp 会被修改。图二是运行结果,temp 的值从【“foo”,“bar”,“zoo”】变成了【“bar”,“zoo”,“zoo”】。
希望老师帮忙解答一下。

temp := []string{"foo", "bar", "zoo"}
for i := 0; i < len(temp); i++ {
if temp[i] == "foo" {
fmt.Println(temp[:i], "+++", temp[i+1:])
ret := append(temp[:i], temp[i+1:]...)
fmt.Println(temp[:i], "+++", temp[i+1:])
fmt.Println("temp:", temp, "ret:",ret )
break
}
}
fmt.Println(temp)
写回答
1回答
-
艾文西
2020-07-04
没看明白你的需求,如果是foo,把foo去掉?
如果这逻辑,你这输出是对的啊,有啥问题?
022020-07-07
相似问题