如何一次迭代4个切片

时间:2019-12-26 23:13:27

标签: go

如何一次遍历Go切片4个项目。

让我说我有[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

我希望for循环能够获得

[1,2,3,4] //First Iteration
[5,6,7,8] //Second Iteration
[9,10,11,12] //Third Iteration
[13,14,15,] // Fourth Iteration

我可以用java和python做到这一点,但是对于golang,我真的不知道。

2 个答案:

答案 0 :(得分:1)

例如,

package main

import "fmt"

func main() {
    slice := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
    for i := 0; i < len(slice); i += 4 {
        var section []int
        if i > len(slice)-4 {
            section = slice[i:]
        } else {
            section = slice[i : i+4]
        }
        fmt.Println(section)
    }
}

游乐场:https://play.golang.org/p/kf7_OJcP13t

输出:

[1 2 3 4]
[5 6 7 8]
[9 10 11 12]
[13 14 15]

答案 1 :(得分:0)

  

如何在Go中切片上进行迭代,一次迭代4个项目。我想要一个   for循环。


在Go中,可读性至关重要。首先,我们读取普通路径,然后读取异常/错误路径。

我们写出正常路径。

n := 4
for i := 0; i < len(s); i += n {
    ss := s[i : i+n]
    fmt.Println(ss)
}

我们将n用作步幅值。

我们编写了一些微调,不会打扰处理异常的正常路径,即切片的结尾。

if n > len(s)-i {
    n = len(s) - i
}

例如,

package main

import "fmt"

func main() {
    s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
    n := 4
    for i := 0; i < len(s); i += n {
        if n > len(s)-i {
            n = len(s) - i
        }
        ss := s[i : i+n]
        fmt.Println(ss)
    }
}

游乐场:https://play.golang.org/p/Vtpig2EeXB7

输出:

[1 2 3 4]
[5 6 7 8]
[9 10 11 12]
[13 14 15]