package array // GroupByProperty groups a slice of structs by a specific property. func GroupByProperty[T any, K comparable](items []T, getProperty func(T) K) map[K][]T { grouped := make(map[K][]T) for _, item := range items { key := getProperty(item) grouped[key] = append(grouped[key], item) } return grouped }