arrUtil

package
v0.0.0-...-e50112c Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2024 License: BSD-3-Clause Imports: 13 Imported by: 1

README

切片操作

  • Convertor

    • 从 []T1 转换为 []T2,比如将 []string 转化为 []int。
  • Find

    • 从切片中查找符合条件的子集,返回一个新的切片。
    • 派生出来的有 First、FirstInt、FirstString 等,返回符合条件的第一个元素。
  • IndexOf

    • 从切片中查找符合条件的第一个元素的索引
    • 派生出来的有 IndexOfInt、IndexOfString、IndexOfInt64 等。
  • Remove/RemoveAt

    • 从切片中删除符合条件的元素,并返回新的切片。
  • Repeat

    • 重复一个对象N次,形成一个切片数组。循环过程中可以通过自定义函数控制生成的对象。
    • 派生出来的有 RepeatInt、RepeatString 等。

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Contains

func Contains(a interface{}, match func(i int) bool) bool

func ContainsAnyInt

func ContainsAnyInt(a []int, find []int) bool

func ContainsAnyInt32

func ContainsAnyInt32(a []int32, find []int32) bool

func ContainsAnyInt64

func ContainsAnyInt64(a []int64, find []int64) bool

func ContainsAnyString

func ContainsAnyString(a []string, find []string, ignoreCase ...bool) bool

func ContainsInt

func ContainsInt(a []int, find int) bool

func ContainsInt32

func ContainsInt32(a []int32, find int32) bool

func ContainsInt64

func ContainsInt64(a []int64, find int64) bool

func ContainsString

func ContainsString(a []string, find string, ignoreCase ...bool) bool

func ContainsStringF

func ContainsStringF(a []string, f func(i int, str string) bool) bool

func ContainsValue

func ContainsValue(slice interface{}, val interface{}, equal ...func(a, b interface{}) bool) bool

func Count

func Count(slice interface{}, match func(i int) bool) int

返回数组中查找符合条件的元素的个数

slice: 要查找的数组
match: 匹配函数

func DiffInt

func DiffInt(src, dest []int) (matches, added, removed []int)

func DiffInt64

func DiffInt64(src, dest []int64) (matches, added, removed []int64)

func DiffString

func DiffString(src, dest []string, ignoreCase ...bool) (matches, added, removed []string)

func DistinctInt

func DistinctInt(a []int) []int

func DistinctInt32

func DistinctInt32(a []int32) []int32

func DistinctInt64

func DistinctInt64(a []int64) []int64

func DistinctSortedInt

func DistinctSortedInt(a []int) []int

func DistinctSortedInt32

func DistinctSortedInt32(a []int32) []int32

func DistinctSortedInt64

func DistinctSortedInt64(a []int64) []int64

func DistinctSortedString

func DistinctSortedString(a []string, ignoreCase ...bool) []string

func DistinctString

func DistinctString(a []string, ignoreCase ...bool) []string

func Find

func Find(slice interface{}, match func(i int) bool, limit ...int) interface{}

从数组中查找符合条件的元素,并返回包含这些元素的新数组

slice: 要查找的数组
match: 匹配函数
n: 最多返回的数量。<0 表示全部

func FindInt

func FindInt(a []int, match func(i int, v int) bool, limit ...int) []int

func FindInt64

func FindInt64(a []int64, match func(i int, v int64) bool, limit ...int) []int64

func FindN

func FindN(slice interface{}, match func(i int) bool, limit int, offset ...int) interface{}

从数组中查找符合条件的元素,并返回包含这些元素的新数组

slice: 要查找的数组
match: 匹配函数
n: 最多返回的数量。<0 表示全部

func FindString

func FindString(a []string, match func(i int, s string) bool, limit ...int) []string

func First

func First(slice interface{}, match func(i int) bool) (interface{}, bool)

从数组中查找第一个符合条件的元素,并返回该元素

a: 要查找的数组
match: 匹配函数

func FirstInt

func FirstInt(a []int, match ...func(i int, v int) bool) (v int, ok bool)

func FirstInt64

func FirstInt64(a []int64, match ...func(i int, v int64) bool) (v int64, ok bool)

func FirstString

func FirstString(a []string, match ...func(i int, s string) bool) (s string, ok bool)

func FloatToInt

func FloatToInt(a []float64) []int

func FloatToInt64

func FloatToInt64(a []float64) []int64

func FloatToObj

func FloatToObj(a []float64) []interface{}

func FloatToStr

func FloatToStr(a []float64) []string

func IndexOf

func IndexOf(a interface{}, match func(i int) bool) int

func IndexOfAnyInt

func IndexOfAnyInt(a []int, find []int) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfAnyInt32

func IndexOfAnyInt32(a []int32, find []int32) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfAnyInt64

func IndexOfAnyInt64(a []int64, find []int64) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfAnyString

func IndexOfAnyString(a []string, find []string, ignoreCase ...bool) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfInt

func IndexOfInt(a []int, find int) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfInt32

func IndexOfInt32(a []int32, find int32) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfInt64

func IndexOfInt64(a []int64, find int64) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfSortedInt

func IndexOfSortedInt(a []int, find int) int

获取指定值在有序数组中的索引。-1 表示不在数组中。数组必须是升序排序的

func IndexOfSortedInt64

func IndexOfSortedInt64(a []int64, find int64) int

获取指定值在有序数组中的索引。-1 表示不在数组中。数组必须是升序排序的

func IndexOfSortedString

func IndexOfSortedString(a []string, find string) int

获取指定值在有序数组中的索引。-1 表示不在数组中。数组必须是升序排序的

func IndexOfString

func IndexOfString(a []string, find string, ignoreCase ...bool) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfStringF

func IndexOfStringF(a []string, f func(i int, str string) bool) int

获取指定值在数组中的索引。-1 表示不在数组中

func IndexOfValue

func IndexOfValue(slice interface{}, val interface{}, equal ...func(a, b interface{}) bool) int

func Int64ToFloat

func Int64ToFloat(a []int64) []float64

func Int64ToInt

func Int64ToInt(a []int64) []int

func Int64ToMap

func Int64ToMap(arr []int64) map[int64]bool

func Int64ToObj

func Int64ToObj(a []int64) []interface{}

func Int64ToStr

func Int64ToStr(a []int64) []string

func IntTo64

func IntTo64(a []int) []int64

func IntToFloat

func IntToFloat(a []int) []float64

func IntToMap

func IntToMap(arr []int) map[int]bool

func IntToObj

func IntToObj(a []int) []interface{}

func IntToStr

func IntToStr(a []int) []string

func MustFirst

func MustFirst(slice interface{}, match func(i int) bool) interface{}

从数组中查找第一个符合条件的元素,并返回该元素

a: 要查找的数组
match: 匹配函数

func MustFirstInt

func MustFirstInt(a []int, match ...func(i int, v int) bool) (v int)

func MustFirstInt64

func MustFirstInt64(a []int64, match ...func(i int, v int64) bool) (v int64)

func MustFirstString

func MustFirstString(a []string, match ...func(i int, s string) bool) (s string)

func MustShiftBool

func MustShiftBool(a []bool, defaultVal ...bool) (out []bool, val bool)

func MustShiftFloat

func MustShiftFloat(a []float64, defaultVal ...float64) (out []float64, val float64)

func MustShiftInt

func MustShiftInt(a []int, defaultVal ...int) (out []int, val int)

func MustShiftInt64

func MustShiftInt64(a []int64, defaultVal ...int64) (out []int64, val int64)

func MustShiftString

func MustShiftString(a []string, defaultVal ...string) (out []string, val string)

func Remove

func Remove(a interface{}, v interface{}) interface{}

func RemoveAt

func RemoveAt(a interface{}, i ...int) interface{}

func RemoveDuplicate

func RemoveDuplicate(arr interface{}, f func(val interface{}) string) interface{}

func RemoveIf

func RemoveIf(a interface{}, f func(i int) bool) interface{}

func RemoveIfN

func RemoveIfN(a interface{}, n int, f func(i int) bool) interface{}

func RemoveInt

func RemoveInt(a []int, val ...int) []int

func RemoveIntAt

func RemoveIntAt(a []int, i ...int) []int

func RemoveIntIf

func RemoveIntIf(a []int, f func(i int) bool) []int

func RemoveIntIfN

func RemoveIntIfN(a []int, n int, f func(i int) bool) []int

func RemoveIntN

func RemoveIntN(a []int, n int, val ...int) []int

func RemoveN

func RemoveN(a interface{}, n int, v interface{}) interface{}

func RemoveString

func RemoveString(a []string, val ...string) []string

func RemoveStringAt

func RemoveStringAt(a []string, i ...int) []string

func RemoveStringIf

func RemoveStringIf(a []string, f func(i int) bool) []string

func RemoveStringIfN

func RemoveStringIfN(a []string, n int, f func(i int) bool) []string

func RemoveStringN

func RemoveStringN(a []string, n int, val ...string) []string

func Repeat

func Repeat(a interface{}, n int, f ...func(i int, a interface{}) interface{}) interface{}

func RepeatInt

func RepeatInt(a int, n int, f ...func(i int, a int) int) []int

func RepeatString

func RepeatString(a string, n int, f ...func(i int, s string) string) []string

func ShiftBool

func ShiftBool(a []bool) (out []bool, val bool, ok bool)

func ShiftFloat

func ShiftFloat(a []float64) (out []float64, val float64, ok bool)

func ShiftInt

func ShiftInt(a []int) (out []int, val int, ok bool)

func ShiftInt64

func ShiftInt64(a []int64) (out []int64, val int64, ok bool)

func ShiftString

func ShiftString(a []string) (out []string, val string, ok bool)

func StrToFloat

func StrToFloat(a []string, ignoreErr ...bool) ([]float64, error)

func StrToFloatNoErr

func StrToFloatNoErr(a []string, ignoreErr ...bool) []float64

func StrToInt

func StrToInt(a []string) ([]int, error)

func StrToInt64

func StrToInt64(a []string) ([]int64, error)

func StrToInt64NoErr

func StrToInt64NoErr(a []string) []int64

func StrToIntNoErr

func StrToIntNoErr(a []string) []int

func StrToMap

func StrToMap(arr []string) map[string]bool

func StrToObj

func StrToObj(a []string) []interface{}

func ToBool

func ToBool(slice interface{}, f ...func(i int) (val bool, err error)) ([]bool, error)

将数组转换为 int 数组

slice: 要转换的源,必须是切片类型

func ToBoolIf

func ToBoolIf(slice interface{}, f func(i int) (val bool, ok bool, err error)) ([]bool, error)

将数组转换为 int 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToBoolIfNoError

func ToBoolIfNoError(slice interface{}, f func(i int) (val bool, ok bool)) []bool

func ToBoolNoError

func ToBoolNoError(slice interface{}, f ...func(i int) bool) []bool

func ToFloat

func ToFloat(slice interface{}, f ...func(i int) (val float64, err error)) ([]float64, error)

将数组转换为 float64 数组

slice: 要转换的源,必须是切片类型

func ToFloatIf

func ToFloatIf(slice interface{}, f func(i int) (val float64, ok bool, err error)) ([]float64, error)

将数组转换为 float64 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToFloatIfNoError

func ToFloatIfNoError(slice interface{}, f func(i int) (val float64, ok bool)) []float64

func ToFloatNoError

func ToFloatNoError(slice interface{}, f ...func(i int) float64) []float64

func ToInt

func ToInt(slice interface{}, f ...func(i int) (val int, err error)) ([]int, error)

将数组转换为 int 数组

slice: 要转换的源,必须是切片类型

func ToInt32

func ToInt32(slice interface{}, f ...func(i int) (val int32, err error)) ([]int32, error)

将数组转换为 int32 数组

slice: 要转换的源,必须是切片类型

func ToInt32If

func ToInt32If(slice interface{}, f func(i int) (val int32, ok bool, err error)) ([]int32, error)

将数组转换为 int32 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToInt32IfNoError

func ToInt32IfNoError(slice interface{}, f func(i int) (val int32, ok bool)) []int32

func ToInt32NoError

func ToInt32NoError(slice interface{}, f ...func(i int) int32) []int32

func ToInt64

func ToInt64(slice interface{}, f ...func(i int) (val int64, err error)) ([]int64, error)

将数组转换为 int64 数组

slice: 要转换的源,必须是切片类型

func ToInt64If

func ToInt64If(slice interface{}, f func(i int) (val int64, ok bool, err error)) ([]int64, error)

将数组转换为 int64 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToInt64IfNoError

func ToInt64IfNoError(slice interface{}, f func(i int) (val int64, ok bool)) []int64

func ToInt64NoError

func ToInt64NoError(slice interface{}, f ...func(i int) int64) []int64

func ToIntIf

func ToIntIf(slice interface{}, f func(i int) (val int, ok bool, err error)) ([]int, error)

将数组转换为 int 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToIntIfNoError

func ToIntIfNoError(slice interface{}, f func(i int) (val int, ok bool)) []int

func ToIntNoError

func ToIntNoError(slice interface{}, f ...func(i int) int) []int

func ToInterface

func ToInterface(slice interface{}, f ...func(a interface{}) interface{}) []interface{}

将数组转换为 interface 数组 参数:

slice: 要转换的源,必须是切片类型

func ToSlice

func ToSlice(slice interface{}, f ...func(a interface{}) interface{}) []interface{}

将数组转换为 interface 数组 参数:

slice: 要转换的源,必须是切片类型

func ToStr

func ToStr(slice interface{}, f ...func(i int) (val string, err error)) ([]string, error)

将数组转换为 string 数组

slice: 要转换的源,必须是切片类型

func ToStrIf

func ToStrIf(slice interface{}, f func(i int) (val string, ok bool, err error)) ([]string, error)

将数组转换为 string 数组

slice: 要转换的源,必须是切片类型
f: 过滤函数,返回值中的 ok 表示是否需要加入到结果数组中。

func ToStrIfNoError

func ToStrIfNoError(slice interface{}, f func(i int) (val string, ok bool)) []string

func ToStrNoError

func ToStrNoError(slice interface{}, f ...func(i int) string) []string

func ToType

func ToType(slice interface{}, dstElemType reflect.Type, f ...func(a interface{}) interface{}) interface{}

将数组或切片转换为指定的切片类型。

参数:

a: 要转换的数组。
dstElemType: 目标元素的类型。
f: 转换时的自定义回调函数。
Example
arr := make([]interface{}, 4)
for i := range arr {
	arr[i] = int64(i)
}

// 下面代码将会 Panic,因为无法从 []interface{} 直接转换为 []int64,即使切片内的元素类型相同。
// intArr := arr.([]int64)

// 通过 ToType(dstType=typeof(int64)) 可以实现转换。
intArr, _ := ToType(arr, reflect.TypeOf(int64(0))).([]int64)
if len(arr) != len(intArr) {
	panic("length not equal")
}
for i := range intArr {
	if arr[i] != intArr[i] {
		panic(fmt.Sprintf("val[%v] not equal", i))
	}
}
Output:

func UnionInt

func UnionInt(a ...[]int) []int

取两个 []int 的并集

func UnionInt32

func UnionInt32(a ...[]int32) []int32

取两个 []int32 的并集

func UnionInt64

func UnionInt64(a ...[]int64) []int64

取两个 []int64 的并集

func UnionString

func UnionString(a, b []string, ignoreCase ...bool) []string

取两个数组的并集。

Types

type CommaSepInt

type CommaSepInt []int

CommaSepInt 以逗号分隔的整数

func (*CommaSepInt) FromDB

func (this *CommaSepInt) FromDB(bytes []byte) error

func (*CommaSepInt) FromString

func (this *CommaSepInt) FromString(str string) error

func (CommaSepInt) String

func (this CommaSepInt) String() string

func (*CommaSepInt) ToDB

func (this *CommaSepInt) ToDB() ([]byte, error)

type CommaSepString

type CommaSepString []string

以逗号分隔的 string

注意:

每个字符串元素中不能再包含逗号,否则会导致序列化与反序列化结果不一致

func (*CommaSepString) FromDB

func (this *CommaSepString) FromDB(bytes []byte) error

func (*CommaSepString) FromString

func (this *CommaSepString) FromString(str string) error

func (CommaSepString) String

func (this CommaSepString) String() string

func (*CommaSepString) ToDB

func (this *CommaSepString) ToDB() ([]byte, error)

Jump to

Keyboard shortcuts

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