阅读 121

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

本文主要介绍了golang实现数组分割的示例代码,要求把数组分割成多个正整数大小的数组,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。

示例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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//分割数组,根据传入的数组和分割大小,将数组分割为大小等于指定大小的多个数组,如果不够分,则最后一个数组元素小于其他数组
func splitArray(arr []int, num int64) [][]int {
 max := int64(len(arr))
 //判断数组大小是否小于等于指定分割大小的值,是则把原数组放入二维数组返回
 if max <= num {
  return [][]int{arr}
 }
 //获取应该数组分割为多少份
 var quantity int64
 if max%num == 0 {
  quantity = max / num
 } else {
  quantity = (max / num) + 1
 }
 //声明分割好的二维数组
 var segments = make([][]int, 0)
 //声明分割数组的截止下标
 var start, end, i int64
 for i = 1; i <= quantity; i++ {
  end = i*num
  if i != quantity {
   segments = append(segments, arr[start:end])
  } else {
   segments = append(segments, arr[start:])
  }
  start = i*num
 }
 return segments
}

附:这个是我在实际业务需求中遇到的问题,不知道大家有没有更好写法

到此这篇关于golang实现数组分割的示例代码的文章就介绍到这了

原文链接:https://blog.csdn.net/MCJPAO/article/details/108431657


    文章分类
    百科问答
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐