slice的坑点
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)