golang實(shí)現(xiàn)數(shù)組分割的示例代碼
需求:給定一個(gè)數(shù)組和一個(gè)正整數(shù),要求把數(shù)組分割成多個(gè)正整數(shù)大小的數(shù)組,如果不夠分,則最后一個(gè)數(shù)組分到剩余的所有元素。
示例1:
數(shù)組:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],正整數(shù):2
期望結(jié)果: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
示例2:
數(shù)組:[1, 2, 3, 4, 5, 6, 7, 8, 9],正整數(shù):2
期望結(jié)果: [[1, 2], [3, 4], [5, 6], [7, 8], [9]]
下面是我的實(shí)現(xiàn)代碼:
//分割數(shù)組,根據(jù)傳入的數(shù)組和分割大小,將數(shù)組分割為大小等于指定大小的多個(gè)數(shù)組,如果不夠分,則最后一個(gè)數(shù)組元素小于其他數(shù)組
func splitArray(arr []int, num int64) [][]int {
max := int64(len(arr))
//判斷數(shù)組大小是否小于等于指定分割大小的值,是則把原數(shù)組放入二維數(shù)組返回
if max <= num {
return [][]int{arr}
}
//獲取應(yīng)該數(shù)組分割為多少份
var quantity int64
if max%num == 0 {
quantity = max / num
} else {
quantity = (max / num) + 1
}
//聲明分割好的二維數(shù)組
var segments = make([][]int, 0)
//聲明分割數(shù)組的截止下標(biāo)
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
}
附:這個(gè)是我在實(shí)際業(yè)務(wù)需求中遇到的問(wèn)題,不知道大家有沒(méi)有更好寫法
到此這篇關(guān)于golang實(shí)現(xiàn)數(shù)組分割的示例代碼的文章就介紹到這了,更多相關(guān)golang數(shù)組分割 內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信