slicex

package
v0.34.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2026 License: MIT Imports: 2 Imported by: 1

Documentation

Overview

Package slicex 提供泛型 Slice 工具函数。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Chunk

func Chunk[T any](slice []T, size int) [][]T

Chunk 将切片分成指定大小的块。

func Contains

func Contains[T comparable](slice []T, target T) bool

Contains 检查切片中是否包含指定元素。

func Filter

func Filter[T any](slice []T, fn func(T) bool) []T

Filter 过滤切片,保留满足条件的元素。

func First

func First[T any](fn func(T) bool, slice ...T) T

First 返回 slice 中第一个满足 fn 的元素。 若无元素满足,返回零值。

func Flatten

func Flatten[T any](slices [][]T) []T

Flatten 将二维切片展平为一维。

func GroupBy

func GroupBy[T any, K comparable](slice []T, fn func(T) K) map[K][]T

GroupBy 按 key 函数分组。

func Index

func Index[T comparable](slice []T, target T) int

Index 返回元素在切片中的索引,不存在返回 -1。

func Join

func Join[T any](slice []T, sep string) string

Join 将切片元素用分隔符连接为字符串。

func Map

func Map[T, R any](slice []T, fn func(T) R) []R

Map 对切片中每个元素应用转换函数。

func Partition

func Partition[T any](slice []T, fn func(T) bool) (matching, rest []T)

Partition 按 fn 返回 true/false 把 slice 分成两组(matching, rest), 保留原顺序。

业务场景: 批量操作时把"成功/失败"分开;订单状态按"已支付/未支付" 分组;任务按"高/低优先级"分组。

用法:

success, failure := slicex.Partition(results, func(r Result) bool {
    return r.Error == nil
})

注意: 跟 GroupBy 的区别是 GroupBy 返回 map[K][]T,Partition 返回 两组互斥切片(matching + rest);如果需要 N 个 key 分组用 GroupBy, 二选一分组用 Partition。

func Reduce

func Reduce[T, R any](slice []T, init R, fn func(R, T) R) R

Reduce 将切片归约为单个值。

func Reverse

func Reverse[T any](slice []T) []T

Reverse 反转切片(返回新切片,不修改原始切片)。

func ToMap

func ToMap[T any, K comparable](slice []T, keyFn func(T) K) map[K]T

ToMap 将切片转为 map,key 由 keyFn 提取。

func Unique

func Unique[T comparable](slice []T) []T

Unique 去重,保持原始顺序。

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL