mirror of
https://github.com/rjNemo/underscore
synced 2026-06-06 02:26:42 +00:00
- Add Intersperse: inserts separator between each element - Pre-allocated for optimal performance - Comprehensive tests including edge cases - Benchmark included Example: Intersperse([1,2,3], 0) → [1,0,2,0,3] Resolves Issue 18 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
23 lines
640 B
Go
23 lines
640 B
Go
package underscore
|
|
|
|
// Intersperse inserts a separator between each element of the slice.
|
|
// Returns an empty slice if the input is empty.
|
|
// Returns the original element if the input has only one element.
|
|
//
|
|
// Example: Intersperse([]int{1,2,3}, 0) → [1, 0, 2, 0, 3]
|
|
func Intersperse[T any](values []T, separator T) []T {
|
|
if len(values) == 0 {
|
|
return []T{}
|
|
}
|
|
if len(values) == 1 {
|
|
return []T{values[0]}
|
|
}
|
|
|
|
// Result will have len(values) + (len(values)-1) elements
|
|
res := make([]T, 0, len(values)*2-1)
|
|
res = append(res, values[0])
|
|
for i := 1; i < len(values); i++ {
|
|
res = append(res, separator, values[i])
|
|
}
|
|
return res
|
|
}
|