以下兩種寫法是等價的(錯誤):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