首页 > 其他 > 详细

golang for range

时间:2019-10-31 01:12:37      阅读:104      评论:0      收藏:0      [点我收藏+]

如下两种写法是等价的(错误):

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是临时变量,不能把其地址直接返回使用,需要拷贝后取地址

golang for range

原文:https://www.cnblogs.com/andyhe/p/11768948.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!