slice的循环的坑 当迭代时 range 关键字会返回两个值,第一个是索引值,第二个是索引位置值的拷贝。 注意:返回的是值的拷贝而不是引用,如果我们把值的地址作为指针使用,会得到一个错误,来看看为啥:

		//付费笔数排行
		var ss Sources
		for _, v3 := range items {
			bfind := false
			for index, v6 := range ss {
				if strings.EqualFold(v3.Sourcekey, v6.Sourcekey) {
					bfind = true
					// 这里千万不用使用v3.Sourcenum++ 因为最后ss[index]的值没有变
					ss[index].Sourcenum++
					break
				}
			}

			if !bfind {
				var s Source
				s.Sourcenum = 1
				s.Sourcekey = v3.Sourcekey
				ss = append(ss, s)
			}

		}
		sort.Sort(ss)

slice的坑.png