slice
文件信息
- 📄 原文件:
slice.go - 🔤 语言:go
完整代码
go
package utils
// ----------------------------------------------------------
// 切片工具函数
// ----------------------------------------------------------
// Contains 检查切片是否包含元素
func Contains[T comparable](slice []T, item T) bool {
for _, v := range slice {
if v == item {
return true
}
}
return false
}
// Filter 过滤切片
func Filter[T any](slice []T, predicate func(T) bool) []T {
result := make([]T, 0)
for _, v := range slice {
if predicate(v) {
result = append(result, v)
}
}
return result
}
// Map 映射切片
func Map[T, U any](slice []T, mapper func(T) U) []U {
result := make([]U, len(slice))
for i, v := range slice {
result[i] = mapper(v)
}
return result
}
// Reduce 归约切片
func Reduce[T, U any](slice []T, initial U, reducer func(U, T) U) U {
result := initial
for _, v := range slice {
result = reducer(result, v)
}
return result
}
// Unique 去重
func Unique[T comparable](slice []T) []T {
seen := make(map[T]bool)
result := make([]T, 0)
for _, v := range slice {
if !seen[v] {
seen[v] = true
result = append(result, v)
}
}
return result
}
💬 讨论
使用 GitHub 账号登录后即可参与讨论