咔叽单机游戏

 找回密码
 立即注册
查看: 372|回复: 0

[Golang] golang实现数组分割的示例代码

[复制链接]
  • TA的每日心情
    无聊
    2019-6-2 14:11
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2022-1-10 11:41:24 | 显示全部楼层 |阅读模式
    需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。

    示例1:

    数组:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],正整数:2
    期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    示例2:

    数组:[1, 2, 3, 4, 5, 6, 7, 8, 9],正整数:2
    期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9]]
    下面是我的实现代码:
    1. //分割数组,根据传入的数组和分割大小,将数组分割为大小等于指定大小的多个数组,如果不够分,则最后一个数组元素小于其他数组
    2. func splitArray(arr []int, num int64) [][]int {
    3. max := int64(len(arr))
    4. //判断数组大小是否小于等于指定分割大小的值,是则把原数组放入二维数组返回
    5. if max <= num {
    6.   return [][]int{arr}
    7. }
    8. //获取应该数组分割为多少份
    9. var quantity int64
    10. if max%num == 0 {
    11.   quantity = max / num
    12. } else {
    13.   quantity = (max / num) + 1
    14. }
    15. //声明分割好的二维数组
    16. var segments = make([][]int, 0)
    17. //声明分割数组的截止下标
    18. var start, end, i int64
    19. for i = 1; i <= quantity; i++ {
    20.   end = i*num
    21.   if i != quantity {
    22.    segments = append(segments, arr[start:end])
    23.   } else {
    24.    segments = append(segments, arr[start:])
    25.   }
    26.   start = i*num
    27. }
    28. return segments
    29. }
    复制代码
    附:这个是我在实际业务需求中遇到的问题,不知道大家有没有更好写法
    到此这篇关于golang实现数组分割的示例代码的文章就介绍到这了,更多相关golang数组分割 内容请搜索咔叽论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持咔叽论坛!

    原文地址:https://www.jb51.net/article/232952.htm
    回复

    使用道具 举报


    QQ|免责声明|小黑屋|手机版|Archiver|咔叽单机游戏

    GMT+8, 2022-11-30 15:57

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表