feat: slice 包新增 Zoom 函数, stream 包支持 Zoom 函数

This commit is contained in:
kercylan98 2023-09-08 13:27:25 +08:00
parent d72f18590b
commit 62ef35a518
2 changed files with 22 additions and 1 deletions

11
utils/slice/zoom.go Normal file
View File

@ -0,0 +1,11 @@
package slice
// Zoom 将切片的长度缩放到指定的大小,如果 newSize 小于 slice 的长度,则会截断 slice如果 newSize 大于 slice 的长度,则会在 slice 的末尾添加零值数据
func Zoom[V any](newSize int, slice []V) []V {
if newSize < 0 {
newSize = 0
}
var s = make([]V, newSize)
copy(s, slice)
return s
}

View File

@ -9,7 +9,17 @@ func (slf Slice[V]) Slice() []V {
return slf
}
// Chunk 的快捷方式
// Copy 复制一份切片
func (slf Slice[V]) Copy() Slice[V] {
return slice.Copy(slf)
}
// Zoom 是 slice.Zoom 的快捷方式
func (slf Slice[V]) Zoom(newSize int) Slice[V] {
return slice.Zoom(newSize, slf)
}
// Chunk 是 slice.Chunk 的快捷方式
func (slf Slice[V]) Chunk(size int) Slices[V] {
chunks := slice.Chunk(slf, size)
result := make(Slices[V], len(chunks))