以下两种写法是等价的(错误):app
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 }
正确写法:code
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
是临时变量,不能把其地址直接返回使用,须要拷贝后取地址it