如何遍历Go中的循环并打印出每三个元素

IrC*_*rCa 0 for-loop go

我知道要遍历列表,我会执行以下操作:

for e := alist.Front(); e != nil; e = e.Next() {
       fmt.Println(e.Value) 
   }
Run Code Online (Sandbox Code Playgroud)

但是,我想打印出每三个元素。在其他语言中,我会增加索引,如 e += 3。我如何用 Go 做到这一点?

How*_*ard 5

列表是一个双向链表,不允许按特定计数进行查找或跳转。我的解决方法是这样的:

i := 0
for e := alist.Front(); e != nil; e = e.Next() {
    if i % 3 == 0 {
        fmt.Println(e.Value)
    }

    i++
}
Run Code Online (Sandbox Code Playgroud)

或者一个用于代码重用的新函数(有了@torek的注释,它变得更简单):

func NextByCount(el *list.Element, count int) *list.Element {
    for ; el != nil && count > 0; count-- {
        el = el.Next()
    }

    return el
}
Run Code Online (Sandbox Code Playgroud)

然后像这样循环:

for e := alist.Front(); e != nil; e = NextByCount(e, 3) {
    fmt.Println(e.Value)
}
Run Code Online (Sandbox Code Playgroud)