golang for range
如下两种写法是等价的(错误):
func findNegative(in []int) []*int {
ret := make([]*int,0)
for _,v := range in {
if v < 0 {
ret = append(ret, &v)
}
}
return ret
}
func findNegative(in []int) []*int {
ret := make([]*int,0)
var tmp int
for i:=0;i< len(in) ;i++ {
tmp = in[i]
if tmp < 0 {
ret = append(ret,&tmp)
}
}
return ret
}
正确写法:
func findNegative(in []int) []*int {
ret := make([]*int,0)
for _,v := range in {
if v < 0 {
tmp := v
ret = append(ret, &tmp)
}
}
return ret
}
for idx,item := range 中的idx
,item
是临时变量,不能把其地址直接返回使用,需要拷贝后取地址