我知道要遍历一个列表,我会执行以下操作:for e := alist.Front(); e != nil; e = e.Next() { fmt.Println(e.Value) }但是,我想打印出每三个元素。在其他语言中,我会像 e += 3 这样增加索引。如何使用 Go 来做到这一点?
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
List 是一个双向链表,不允许按特定计数查找或跳转。我的解决方法是这样的:
i := 0
for e := alist.Front(); e != nil; e = e.Next() {
if i % 3 == 0 {
fmt.Println(e.Value)
}
i++
}
或者一个代码重用的新函数(加上@torek的注释,它变得更简单了):
func NextByCount(el *list.Element, count int) *list.Element {
for ; el != nil && count > 0; count-- {
el = el.Next()
}
return el
}
然后像这样循环:
for e := alist.Front(); e != nil; e = NextByCount(e, 3) {
fmt.Println(e.Value)
}
- 1 回答
- 0 关注
- 177 浏览
添加回答
举报
0/150
提交
取消