为了账号安全,请及时绑定邮箱和手机立即绑定

如何在切片上迭代,一次 4 个项目

如何在切片上迭代,一次 4 个项目

Go
有只小跳蛙 2023-08-14 16:49:56
如何一次迭代 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 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

例如,


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]


查看完整回答
反对 回复 2023-08-14
?
Helenr

TA贡献1780条经验 获得超3个赞

如何在 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]


查看完整回答
反对 回复 2023-08-14
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信