golang for range

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

相關文章
相關標籤/搜索