Help us shape the future of Go! Take the 2026 Go Developer Survey

slicex

package
v0.25.2 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 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