Skip to content

Instantly share code, notes, and snippets.

@jonmorehouse
Created September 14, 2023 15:14
Show Gist options
  • Save jonmorehouse/571ef27a0fd399053929f0c40ce1f239 to your computer and use it in GitHub Desktop.
Save jonmorehouse/571ef27a0fd399053929f0c40ce1f239 to your computer and use it in GitHub Desktop.
package main
import "fmt"
func SliceToGroupsUpdated[T any](slice []T, limit int) [][]T {
if limit < 1 {
limit = 1
}
matrix := [][]T{{}}
row := 0
for _, val := range slice {
matrix[row] = append(matrix[row], val)
if len(matrix[row]) == limit {
row++
matrix = append(matrix, []T{})
}
}
return matrix
}
func SliceToGroupsOrig[T any](vals []T, grpSize int) [][]T {
if grpSize < 1 {
grpSize = 1
}
grps := make([][]T, 0)
grp := make([]T, 0, grpSize)
for _, val := range vals {
grp = append(grp, val)
if len(grp) >= grpSize {
grps = append(grps, grp)
grp = make([]T, 0, grpSize)
}
}
return grps
}
func main() {
grps := SliceToGroupsUpdated([]string{"a", "b", "c"}, 0)
fmt.Println("updated", grps)
grps = SliceToGroupsOrig([]string{"a", "b", "c"}, 0)
fmt.Println("original", grps)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment