util.go 751 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package util
  2. // SliceChunk 用于将字符串切片分块
  3. func SliceChunk(src []string, chunkSize int) (chunks [][]string) {
  4. total := len(src)
  5. chunks = make([][]string, 0)
  6. if chunkSize < 1 {
  7. chunkSize = 1
  8. }
  9. if total == 0 {
  10. return
  11. }
  12. chunkNum := total / chunkSize
  13. if total%chunkSize != 0 {
  14. chunkNum++
  15. }
  16. chunks = make([][]string, chunkNum)
  17. for i := 0; i < chunkNum; i++ {
  18. for j := 0; j < chunkSize; j++ {
  19. offset := i*chunkSize + j
  20. if offset >= total {
  21. return
  22. }
  23. if chunks[i] == nil {
  24. actualChunkSize := chunkSize
  25. if i == chunkNum-1 && total%chunkSize != 0 {
  26. actualChunkSize = total % chunkSize
  27. }
  28. chunks[i] = make([]string, actualChunkSize)
  29. }
  30. chunks[i][j] = src[offset]
  31. }
  32. }
  33. return
  34. }