Documentation ¶
Index ¶
- func Cartesian[T, U any](ch1 chan T, ch2 chan U) chan pair.Pair[T, U]
- func Collect[T any](ch chan T) []T
- func CollectFun[T any, U gotools.Comparable](f func(x T) U) func(ch chan T) []U
- func Count[T any](ch chan T) int
- func Distinct[T gotools.Comparable](ch chan T) chan T
- func DistinctCount[T comparable](ch chan T) int
- func DropWhile[T any](f func(x T) bool) func(ch chan T) chan T
- func ErrorCH(ch chan error)
- func Filter[T any](f func(x T) bool) func(ch chan T) chan T
- func First[T any](f func(x T) bool) func(ch chan T) T
- func FlatMap[T any, U any](f func(x T) []U) func(ch chan T) chan U
- func Flatten[S ~[]T, T any](ch chan S) chan T
- func FromArray[T any](a []T) chan T
- func FromArray2[T any, U any](f func(x T) U) func(a []T) chan U
- func FromCK[T any](ck *db.CKinfo) func(query *query.SQLBuilder) (chan T, chan error)
- func FromCKStr(ck *db.CKinfo) func(query *query.SQLBuilder) (chan []string, chan error)
- func FromCsv(path string) func(header bool) (chan []string, chan error)
- func FromElasticSearch[T any](client *elastic.Client) func(index string, query any) (chan db.ElasticBluk[T], chan error)
- func FromExcel(path string) func(sheet string, header bool) (chan []string, chan error)
- func FromGob[T any](path string, del bool) (chan T, chan error)
- func FromGzip(path string) func(skip int) (chan string, chan error)
- func FromJson[T any](path string) func(skip int) (chan T, chan error)
- func FromMap[K gotools.Comparable, V any](m map[K]V) func() chan pair.Pair[K, V]
- func FromMysql[T any](con string) func(query *query.SQLBuilder) (chan T, chan error)
- func FromMysqlStr(con string) func(query *query.SQLBuilder) (chan []string, chan error)
- func FromRedisList[T any](host, pwd string, dbN, num int) func(key string) (chan T, chan error)
- func FromTable(path string) func(header bool, seq string, escape byte) (chan []string, chan error)
- func FromTxt(path string) func(skip int) (chan string, chan error)
- func GetBufferSize() int
- func GetSortWindowSize() int
- func Group[T any](f func(x, y T) bool) func(ch chan T) chan []T
- func InnerJoin[T any, U any, R any](f func(x T, y U) R, f1 func(x T, y U) int) func(ch1 chan T, ch2 chan U) chan R
- func InterS[T gotools.Comparable](ch1 chan T, ch2 chan T) chan T
- func Intersect[T any](f func(x, y T) int) func(ch1, ch2 chan T) chan T
- func Lag[T any](def T, n int) func(ch chan T) chan T
- func Last[T any](f func(x T) bool) func(ch chan T) T
- func Lead[T any](def T, n int) func(ch chan T) chan T
- func LeftJoin[T any, U any, R any](f func(x T, y U) R, f1 func(x T, y U) int) func(ch1 chan T, ch2 chan U) chan R
- func Map[T any, U any](f func(x T) U) func(ch chan T) chan U
- func Maps[T any, U any](fn func(ch chan T, num int) U) func(cs ...chan T) chan U
- func Merge[T any](f func(x, y T) bool) func(cs ...chan T) chan T
- func More[T, U, R any](f func(x T, y U) R) func(ch1 chan T, ch2 chan U) chan R
- func Partition[T any](f func(x T) bool) func(ch chan T) (chan T, chan T)
- func Reduce[T, U any](f func(x U, y T) U, init U) func(ch chan T) U
- func Scanl[T, U any](f func(x U, y T) U, init U) func(ch chan T) chan U
- func Sequence(start, end, step int) chan int
- func SetBufferSize(newSize int)
- func SetParallel(parallel int)
- func SetSortWindowSize(newSize int)
- func Slider[T, U any](f func(x ...T) U, before, after int, defaultValue T) func(ch chan T) chan U
- func Sort[T any](f func(x, y T) bool) func(ch chan T) chan T
- func SortS[T any](f func(x, y T) bool) func(ch chan T) chan T
- func Split[T any](fn func(T) int, num int) func(ch chan T) []chan T
- func SubS[T gotools.Comparable](ch1 chan T, ch2 chan T) chan T
- func Subtract[T any](f func(x, y T) int) func(ch1 chan T, ch2 chan T) chan T
- func TakeWhile[T any](f func(x T) bool) func(ch chan T) chan T
- func ToCK(ck *db.CKinfo, q query.SqlInsert) func(ch chan []any) error
- func ToCsv(path string, append bool, header ...string) func(ch chan []string) error
- func ToElasticSearch[T any](client *elastic.Client) func(ch chan db.ElasticBluk[T]) error
- func ToExcel(e *ExcelField) func(ch chan []string) error
- func ToGob[T any](path string, replace bool) func(ch chan T) error
- func ToGobArr[S ~[]T, T any](path string) func(data S) error
- func ToGzip(path string, append bool) func(ch chan string) error
- func ToJson[T any](path string, append bool) func(ch chan T) error
- func ToMysqlInset(con string, q query.SqlInsert) func(ch chan []any) error
- func ToRedisList[T any](host, pwd string, dbNUM int) func(key string, ch chan T) error
- func ToTable(t *TableField) func(ch chan []string) error
- func ToTxt(path string, append bool) func(ch chan string) error
- func Union[T, U any](fn func(x T) U) func(chs ...chan T) chan U
- func Unique[T any](f func(x, y T) bool) func(ch chan T) chan T
- func UniqueCount[T any](f func(x, y T) bool) func(ch chan T) int
- func Walk[T any](f func(x T)) func(ch chan T)
- func Window[T any](ch chan T) func(windowSize int) chan []T
- func Zip[T any, U any, V any](f func(x T, y U) V) func(ch1 chan T, ch2 chan U) chan V
- type ExcelField
- type Pipeline
- type TableField
- func (t *TableField) SetAppend(append bool) *TableField
- func (t *TableField) SetEscape(escape byte) *TableField
- func (t *TableField) SetHeader(header ...string) *TableField
- func (t *TableField) SetPath(path string) *TableField
- func (t *TableField) SetSeq(seq string) *TableField
- func (t *TableField) SetUseQuote(useQuote bool) *TableField
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Cartesian ¶
Cartesian 生成笛卡尔积 参数:
- ch1: 一个通道,通道中的值是类型为 T 的数据。
- ch2: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 array.Pair[T, T] 的数据,表示笛卡尔积。
注意: 由于需要对收集第二个通道的数据,因此可以将较少数据的通道传递给第二个通道。 如果第二个通道数据很多,要考虑内存占用问题。
func Collect ¶
func Collect[T any](ch chan T) []T
Collect 从通道中收集所有值并返回一个切片。 参数:
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个切片,其中包含从通道中读取的所有值。
函数功能:
- 从输入通道 ch 中读取所有值,并将它们按顺序添加到一个切片中。
- 当通道关闭时,函数返回包含所有读取值的切片。
func CollectFun ¶
func CollectFun[T any, U gotools.Comparable](f func(x T) U) func(ch chan T) []U
func Distinct ¶
func Distinct[T gotools.Comparable](ch chan T) chan T
Distinct 返回一个函数,该函数接受一个输入通道(chan T), 从中移除重复的元素,并将唯一的元素发送到一个新的输出通道(chan T)中。 函数内部使用一个映射(map)来跟踪已经见过的元素,以确保每个元素只出现一次。 返回的输出通道在处理完成后会被关闭。
func DistinctCount ¶
func DistinctCount[T comparable](ch chan T) int
DistinctCount 去重计数 参数:
- ch: 一个通道,用于接收数据。
返回:
- int: 通道中去重后元素的数量。
func DropWhile ¶
DropWhile 从通道中读取值,直到遇到第一个不满足条件的值,之后将所有后续值传递到新通道。 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个布尔值,表示该值是否满足条件。
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个新通道,其中包含从第一个不满足条件的值之后的所有值。
函数功能:
- 从输入通道 ch 中读取值,应用函数 f 来检查每个值是否满足条件。
- 跳过所有满足条件的值,直到遇到第一个不满足条件的值。
- 从第一个不满足条件的值开始,将所有后续值写入新通道 ch_。
- 新通道 ch_ 包含从第一个不满足条件的值之后的所有值。
func Filter ¶
Filter 过滤通道中的数据,只将符合条件的数据发送到新的通道。 参数:
- f: 一个函数,接受类型为 T 的输入,并返回布尔值。如果返回 true,则将该数据发送到新通道;如果返回 false,则忽略该数据。
- ch: 一个通道,通道中的每个值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 T 的数据,只包含符合函数 f 条件的数据。
函数功能:
- 从输入通道 ch 中读取数据,对每个数据应用函数 f。如果函数 f 返回 true,则将数据写入新的通道 ch_
func First ¶
Find 从通道中查找第一个满足条件的值。 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个布尔值,表示该值是否满足条件。
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 第一个满足条件的值。如果通道中的值都不满足条件,返回类型 T 的零值。
函数功能:
- 从输入通道 ch 中读取数据,应用函数 f 来检查每个值是否满足条件。
- 如果找到第一个满足条件的值,则返回该值。
- 如果通道关闭且没有找到满足条件的值,则返回类型 T 的零值。
func FlatMap ¶
FlatMap 返回一个函数,该函数接受一个输入通道(chan T), 参数:
- f: 一个函数,接受类型为 T 的输入,返回类型为 []U 的结果。
- ch: 一个通道,通道中的每个值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 U 的数据,每个值是应用函数 f 之后的结果。
func Flatten ¶
func Flatten[S ~[]T, T any](ch chan S) chan T
Flatten 接收一个通道,该通道发送包含元素 T 的切片 S。 它将所有切片中的元素展平并发送到新的通道中。
参数:
- ch: 一个通道,发送元素为类型 S 的切片,其中 S 是类型 T 的切片。
返回:
- 返回一个新的通道,该通道发送类型为 T 的元素,这些元素是展平后的切片元素。
func FromArray2 ¶
FromArray2 将输入切片 `a` 中的每个元素应用函数 `f`,并返回一个包含结果的通道。 参数:
- f: 一个函数,接受切片中的元素 `T` 类型,并返回 `U` 类型的结果。
- a: 一个 `T` 类型的切片,将对其每个元素应用函数 `f`。
返回:
- 一个 `U` 类型的通道,通道中的值是对切片 `a` 中的每个元素应用函数 `f` 的结果。
func FromCK ¶
FromCK 从 ClickHouse 数据库中执行查询并返回数据通道。 参数:
- query: *query.SQLBuilder - 查询语句
返回:
- chan T: 查询结果数据通道
- error: 错误信息,如果查询失败。
func FromCKStr ¶
FromCKStr 从 ClickHouse 数据库中执行查询并返回数据通道。 使用 SQL 查询字符串。
参数: - query - *SQLBuilder 类型的结构体,用于构建 SQL 查询语句。
返回:
- chan []string: 查询结果数据通道。
- error: 错误信息,如果查询失败。
func FromCsv ¶
FromCsv 从指定的 CSV 文件路径读取数据,并将其以切片的形式发送到通道。 参数:
- path: CSV 文件的路径,字符串类型。
返回:
- 一个通道,通道中的值是读取的 CSV 文件中的每一行数据,每一行数据是一个字符串切片([]string)。
- 一个通道,通道中的值是读取 CSV 文件时发生的错误。
func FromElasticSearch ¶
func FromElasticSearch[T any](client *elastic.Client) func(index string, query any) (chan db.ElasticBluk[T], chan error)
FromElasticSearch 从 ElasticSearch 中读取数据。 参数:
- client: ElasticSearch 客户端。
- index: ElasticSearch 索引名称。
- query: ElasticSearch 查询请求。
返回:
- chan db.ElasticBluk[T]: 数据通道。
- chan error: 错误通道。
func FromExcel ¶
FromExcel 从指定的 Excel 文件路径读取数据,并将其以切片的形式发送到通道。 参数:
- path: Excel 文件的路径,字符串类型。
- sheet: 工作表的名称,字符串类型。
- header: 是否包含表头,布尔类型。
返回:
- 一个通道,通道中的值是读取的 Excel 文件中的每一行数据,每一行数据是一个字符串切片([]string)。
- 一个通道,通道中的值是读取 Excel 文件时发生的错误。
func FromGob ¶
FromGob 从指定的 gob 文件路径读取数据,并通过通道返回。 参数:
- path - 文件路径
- del - 是否删除文件
返回:
- chan T: 数据通道
- chan error: 错误通道
func FromGzip ¶
FromGzip 方法从 gzip 文件中读取数据并发送到通道中 参数:
- path - gzip 文件路径
- skip - 跳过的行数
返回:
- 一个通道,用于接收从 gzip 文件中读取的数据。
- 一个通道,用于接收错误信息
func FromJson ¶
FromJson 方法从 JSON 文件中读取数据并发送到通道中 参数:
- path - 文件路径
- skip - 跳过的行数
返回:
- 一个通道,用于接收从文件中读取的数据。 - 一个通道,用于接收错误信息
func FromMap ¶
func FromMap[K gotools.Comparable, V any](m map[K]V) func() chan pair.Pair[K, V]
FromMap 将一个映射转换为一个通道,每个通道中的元素是映射中的键值对。 参数:
- m: 一个映射,键类型为 K,值类型为 V。
返回:
- 一个通道,每个通道中的元素是包含一个键值对的切片,类型为 []array.Pair[K, V]。
函数功能:
- 遍历映射 m,将每个键值对包装在一个切片中,然后将这些切片逐个发送到通道 ch 中。
- 每个通道中的元素都是一个包含单个键值对的切片。
- 当所有键值对都被发送到通道后,关闭通道。
func FromMysql ¶
func FromMysql[T any](con string) func(query *query.SQLBuilder) (chan T, chan error)
FromMysqlQuery 从 MySQL 数据库中执行查询并返回数据通道。 参数:
- query: *query.SQLBuilder - 查询语句
返回:
- chan T: 查询结果数据通道
- error: 错误信息,如果查询失败。
func FromMysqlStr ¶
func FromMysqlStr(con string) func(query *query.SQLBuilder) (chan []string, chan error)
FromMysqlStr 从 MySQL 数据库中执行查询并返回数据通道, 使用 SQL 查询字符串。
参数: - query - *SQLBuilder 类型的结构体,用于构建 SQL 查询语句。
返回:
- chan []string: 查询结果数据通道。
- error: 错误信息,如果查询失败。
func FromRedisList ¶
FromRedisList 方法从 Redis 中读取数据并发送到通道中 参数:
- host - Redis 地址
- pwd - Redis 密码
- dbNUM - Redis 数据库编号
- num - 从 Redis 中读取的数据条数 等于0 直接返回,大于0 读取指定数量的数据, 小于0 读取所有数据
返回:
- 返回一个函数,接受一个键名作为参数,返回一个通道,用于接收从 Redis 中读取的数据,并返回错误信息
注意: 该函数会持续从 Redis 中读取数据
func FromTable ¶
FromTable 从指定的文本文件路径读取数据,并将其以切片的形式发送到通道。 参数:
- path: 文本文件的路径,字符串类型。
- header: 是否包含表头,布尔类型。
- seq: 文本文件的分隔符,字符串类型。
返回:
- 一个通道,通道中的值是读取的表格文件中的每一行数据,每一行数据是一个字符串切片([]string)。
- 一个通道,通道中的值是读取表格文件时发生的错误。
func FromTxt ¶
FromTxt 方法从文本文件中读取数据并发送到通道中 参数:
- path - 文件路径
- skip - 跳过的行数
返回:
- 一个通道,用于接收从文件中读取的数据。 - 一个通道,用于接收错误信息
func Group ¶
Group 对通道进行分组,返回一个chan 参数:
- f: 一个函数,接受两个类型为 T 的值,返回一个布尔值,表示是否满足分组条件。 当 `fun(x, y)` 返回 `true`,则分组是相同的
- ch: 一个通道,用于接收数据。数据必须是排序后的
返回:
- 一个通道,用于接收分组后的数据。
func InnerJoin ¶
func InnerJoin[T any, U any, R any](f func(x T, y U) R, f1 func(x T, y U) int) func(ch1 chan T, ch2 chan U) chan R
InnerJoin 按照某个函数进行连接 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个类型为 R 的值。
- f1: 一个函数,用于比较大小, -1 表示小于, 0 表示相等, 1 表示大于。,通道数据必须升序,当通道数据降序,函数结果数字要相反
- ch1: 一个通道,用于接收第一个数据
- ch2: 一个通道,用于接收第二个数据
返回:
- 一个通道,用于接收连接后的数据。
func InterS ¶
func InterS[T gotools.Comparable](ch1 chan T, ch2 chan T) chan T
InterS 返回两个通道的交集 参数:
- ch1: 一个通道,通道中的值是类型为 T 的数据。
- ch2: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 T 的数据,表示两个通道的交集。
注意: 由于需要对收集第二个通道的数据,因此可以将较少数据的通道传递给第二个通道。 如果第二个通道数据很多,要考虑内存占用问题。
func Intersect ¶
Intersect 返回两个通道的交集 参数:
- f: 一个函数,接受两个类型为 T 的值,返回一个int,表示比较大小 0 相等,-1 小于,1 大于。
- ch1: 一个通道,用于接收数据。必须排序
- ch2: 一个通道,用于接收数据。必须排序
返回:
- 一个通道,用于接收排序后的数据。
func Lag ¶
Lag 将通道数据后推n位,最前缺失的n位用def填充
参数:
- def: 用于填充缺失的元素
- n: 后推的位数
返回:
- 返回一个新的通道,该通道发送类型为 T 的元素,这些元素是后推的切片元素
func Last ¶
Last 从通道中查找最后一个满足条件的值。 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个布尔值,表示该值是否满足条件。
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 最后一个满足条件的值。如果通道中的值都不满足条件,返回类型 T 的零值。
函数功能:
- 从输入通道 ch 中读取数据,应用函数 f 来检查每个值是否满足条件。
- 如果找到最后一个满足条件的值,则返回该值。
- 如果通道关闭且没有找到满足条件的值,则返回类型 T 的零值。
func Lead ¶
Lead 将通道数据提前n位,最后缺失的n位用def填充
参数:
- def: 用于填充缺失的元素
- n: 提前的位数
返回:
- 返回一个新的通道,该通道发送类型为 T 的元素,这些元素是提前的切片元素
func LeftJoin ¶
func LeftJoin[T any, U any, R any](f func(x T, y U) R, f1 func(x T, y U) int) func(ch1 chan T, ch2 chan U) chan R
LeftJoin 按照某个函数进行连接 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个类型为 R 的值。
- f1: 一个函数,用于比较大小, -1 表示小于, 0 表示相等, 1 表示大于,通道数据必须升序,当通道数据降序,函数结果数字要相反
- ch1: 一个通道,用于接收第一个数据
- ch2: 一个通道,用于接收第二个数据
返回:
- 一个通道,用于接收连接后的数据。
func Map ¶
Map 将通道中的每个元素应用函数 f,并将结果发送到一个新的通道。 参数:
- f: 一个函数,接受类型为 T 的输入,返回类型为 U 的结果。
- ch: 一个通道,通道中的每个值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 U 的数据,每个值是应用函数 f 之后的结果。
函数功能:
- 从输入通道 ch 中读取数据,将每个数据应用函数 f,然后将结果写入新的通道 ch_。
- 使用一个 goroutine 执行这些操作,并在完成后关闭通道 ch_。
func Maps ¶
Maps 将多个通道中的数据进行映射 参数:
- fn: 一个函数,接受一个类型为 T 的值 ,类型为int的通道位置,返回一个类型为 U 的值。
- cs: 一个包含多个通道的切片。
返回:
- 一个通道,用于接收映射后的数据。
func Merge ¶
Merge 合并排序多个通道,按照func(x, y T) bool进行排序 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个布尔值,表示是否满足排序条件。 当 `fun(x, y)` 返回 `true`,则在排序时 `x` 应位于 `y` 之前。
- cs: 一个包含多个通道的切片。
返回:
- 一个通道,用于接收排序后的数据。
func More ¶
func More[T, U, R any](f func(x T, y U) R) func(ch1 chan T, ch2 chan U) chan R
More 按照某个函数进行连接,接受两个通道,通道元素一一对应进行处理 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个类型为 R 的值。
- ch1: 一个通道,用于接收第一个数据
- ch2: 一个通道,用于接收第二个数据
返回:
- 一个通道,用于接收连接后的数据
func Partition ¶
Partition 根据给定的条件函数将通道中的值分为两个通道。 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个布尔值,表示该值是否满足条件。
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- ch1: 一个通道,通道中的值是类型为 T 的数据,表示满足条件的值。
- ch2: 一个通道,通道中的值是类型为 T 的数据,表示不满足条件的值。
函数功能:
- 从输入通道 ch 中读取数据,根据函数 f 的结果将每个值分配到两个新的通道 ch1 和 ch2。
- 当输入通道 ch 关闭时,关闭新的通道 ch1 和 ch2。
func Reduce ¶
func Reduce[T, U any](f func(x U, y T) U, init U) func(ch chan T) U
Reduce 对通道中的数据进行归约操作,将通道中的所有数据合并成一个值。 参数:
- f: 一个函数,接受两个参数:一个类型为 U 的累加器和一个类型为 T 的当前值,返回一个类型为 U 的新累加器。
- init: 初始值,类型为 U,用作归约操作的起始累加器。
- ch: 一个通道,通道中的每个值是类型为 T 的数据,将被用于归约操作。
返回:
- 返回归约操作后的结果,类型为 U。
函数功能:
- 从输入通道 ch 中读取数据,并将每个数据应用归约函数 f,使用 init 作为初始值。
- 在处理完所有数据后,返回最终的累加器值。
func Scanl ¶
func Scanl[T, U any](f func(x U, y T) U, init U) func(ch chan T) chan U
Scanl 对通道中的数据进行扫描操作,生成一个累加序列,并将结果发送到新的通道。 参数:
- f: 一个函数,接受两个参数:一个类型为 U 的累加器和一个类型为 T 的当前值,返回一个类型为 U 的新累加器。
- init: 初始值,类型为 U,用作扫描操作的起始累加器。
- ch: 一个通道,通道中的每个值是类型为 T 的数据,将用于扫描操作。
返回:
- 一个通道,通道中的值是类型为 U 的数据,表示扫描操作的累加序列。
函数功能:
- 从输入通道 ch 中读取数据,并将每个数据应用扫描函数 f,使用 init 作为初始值。
- 将每个步骤的累加器值写入新的通道 ch_。
- 使用一个 goroutine 执行这些操作,并在完成后关闭通道 ch_。
func Sequence ¶
Sequence 生成一个整数序列,并将其发送到通道。 参数:
- start: 序列的起始值,整数类型。
- end: 序列的结束值,整数类型。序列生成会在达到该值时停止(不包括此值)。
- step: 序列的步长,整数类型。可以为正数或负数。
返回:
- 一个通道,通道中的值是整数类型,表示生成的序列。
函数功能:
- 从 start 开始,根据步长 step 生成整数序列,直到达到 end 为止(不包括 end)。
func SetParallel ¶
func SetParallel(parallel int)
func Slider ¶
Slider 滑动窗口函数 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个类型为 U 的值。
- before: 滑动窗口的前置元素数量。
- after: 滑动窗口的后置元素数量。
- defaultValue: 滑动窗口中的默认值。
返回:
- 一个函数,接受一个通道,返回一个通道,用于接收滑动窗口的元素。
func Sort ¶
Sort 针对数据较大的情况进行处理,使用了外部文件排序,如果内存满足请使用SortSimple 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个布尔值,表示是否满足排序条件。 当 `fun(x, y)` 返回 `true`,则在排序时 `x` 应位于 `y` 之前。
- ch: 一个通道,用于接收数据。
返回:
- 一个通道,用于接收排序后的数据。
示例:
Sort(func(x, y int) bool { return x > y })(ch)
func SortS ¶
SortS 排序通道,并返回排序后的chan 参数:
- f: 一个函数,接受两个类型为 T 和 U 的值,返回一个布尔值,表示是否满足排序条件。 当 `fun(x, y)` 返回 `true`,则在排序时 `x` 应位于 `y` 之前。
- ch: 一个通道,用于接收数据。
返回:
- 一个通道,用于接收排序后的数据。
func Split ¶
Split 将通道中的数据分组 参数:
- fn: 一个函数,接受一个类型为 T 的值,返回一个整数值,表示该值属于哪个分组。
- num: 分组的数量。
返回:
- 一个函数,接受一个通道,返回一个包含 num 个通道的切片。
func SubS ¶
func SubS[T gotools.Comparable](ch1 chan T, ch2 chan T) chan T
SubS 返回两个通道的差集 参数:
- ch1: 一个通道,通道中的值是类型为 T 的数据。
- ch2: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个通道,通道中的值是类型为 T 的数据,表示两个通道的差集。
注意: 由于需要对收集第二个通道的数据,因此可以将较少数据的通道传递给第二个通道。 如果第二个通道数据很多,要考虑内存占用问题。
func Subtract ¶
Subtract 返回两个通道的差集 参数:
- f: 一个函数,接受两个类型为 T 的值,返回一个int,表示比较大小 0 相等,-1 小于,1 大于。
- ch1: 一个通道,用于接收数据。必须排序
- ch2: 一个通道,用于接收数据。必须排序
返回:
- 一个通道,用于接收排序后的数据。
func TakeWhile ¶
TakeWhile 从通道中读取值,直到遇到第一个不满足条件的值。 参数:
- f: 一个函数,接受一个类型为 T 的值,返回一个布尔值,表示该值是否满足条件。
- ch: 一个通道,通道中的值是类型为 T 的数据。
返回:
- 一个新通道,其中包含从输入通道中读取的所有满足条件的值。
函数功能:
- 从输入通道 ch 中读取值,应用函数 f 来检查每个值是否满足条件。
- 将所有满足条件的值写入新通道 ch_。
- 当遇到第一个不满足条件的值时,停止读取并关闭新通道 ch_。
- 新通道 ch_ 只包含在遇到第一个不满足条件的值之前的所有值
func ToCK ¶
ToCKInsert 方法将通道中的数据插入到 ClickHouse 数据库中 参数:
- ck *db.CKinfo - *db.CKinfo 类型的结构体,用于构建 ck 客户端信息
- q - *SQLBuilder 类型的结构体,用于构建 SQL 查询语句。
- ch - 一个通道,用于接收待插入的数据。
返回:
- 一个函数, 用于执行数据库插入操作。
func ToCsv ¶
ToCsv 将通道中的数据写入指定的 CSV 文件。 参数:
- path: CSV 文件的路径,字符串类型。
- ch: 一个通道,通道中的每个值是一个字符串切片([]string),表示 CSV 文件中的一行数据。
函数功能:
- 从通道中读取数据,并将数据写入指定的 CSV 文件。
- 使用一个 goroutine 执行写入操作,并通过 stop 通道同步写入完成。
func ToElasticSearch ¶
func ToElasticSearch[T any](client *elastic.Client) func(ch chan db.ElasticBluk[T]) error
ToElasticSearch 将数据写入 ElasticSearch。 参数:
- client: ElasticSearch 客户端。
- index: ElasticSearch 索引名称。
- ctype: ElasticSearch 写入类型 index create
- data: 需要写入的数据。
返回:
error: 错误信息,如果写入失败。
func ToExcel ¶
func ToExcel(e *ExcelField) func(ch chan []string) error
ToExcel 将通道中的数据写入指定的 Excel 文件。 参数:
- e *ExcelField: Excel 文件配置
- ch: 一个通道,通道中的每个值是一个字符串切片([]string),表示 Excel 文件中的一行数据。
返回:
error
func ToGob ¶
ToGob 接收一个路径和一个通道,将通道中的数据按块写入到指定路径的 gob 文件中。 参数:
- path: gob 文件的路径。
- ch: 一个通道,用于接收待写入的数据。
- replace: 是否覆盖已存在的文件。
返回:
一个函数,用于执行 gob 文件写入操作。
func ToGobArr ¶
ToGobArr 接收一个路径和一个切片,将切片中的数据按块写入到指定路径的 gob 文件中。 参数:
- path: gob 文件的路径。
- data: 需要写入的数据。
返回:
一个函数,用于将数据写入到 gob 文件中。
func ToGzip ¶
ToGzip 方法将通道中的数据写入 gzip 文件 参数:
- path - gzip 文件路径
- append - 是否追加到文件末尾(true)还是覆盖文件(false)
返回:
- 一个函数,接受一个通道作为参数,写入通道中的数据到 gzip 文件中,并返回错误信息。
func ToJson ¶
ToJson 方法将通道中的数据写入到 JSON 文件中 参数:
- path - 文件路径
- append - 是否追加写入文件
- ch - 一个通道,用于接收待写入的数据。
返回:
- 一个函数,用于执行 JSON 文件写入操作。
func ToMysqlInset ¶
ToMysqlInset 方法将通道中的数据插入到 MySQL 数据库中 参数:
- con mysql 连接字符串
- q - *SQLBuilder 类型的结构体,用于构建 SQL 查询语句。
- ch - 一个通道,用于接收待插入的数据。
返回:
- 一个函数, 用于执行数据库插入操作。
func ToRedisList ¶
ToRedisList 方法将通道中的数据写入 Redis 中list键 参数:
- host - Redis 地址
- pwd - Redis 密码
- dbNUM - Redis 数据库编号
- key - Redis 中的列表名
返回:
一个函数,接受一个list键,一个通道作为参数,将通道中的数据写入 Redis 中list键,并返回错误信息
func ToTable ¶
func ToTable(t *TableField) func(ch chan []string) error
ToTable 将通道中的数据写入指定分隔符 文件。 参数:
- t *TableField: 表格配置
- ch: 一个通道,通道中的每个值是一个字符串切片([]string),表示表格文件中的一行数据。
返回:
- 一个函数,用于执行文件写入操作。
- error
func ToTxt ¶
ToTxt 方法将通道中的数据写入到文本文件中 参数:
- path - 文件路径
- append - 是否追加写入文件
- ch - 一个通道,用于接收待写入的数据。
返回:
- 一个函数,用于执行文件写入操作。
func Union ¶
func Union[T, U any](fn func(x T) U) func(chs ...chan T) chan U
Union 将多个通道合并为一个通道。
参数:
chs: 多个需要合并的通道,这些通道的数据类型必须相同。
返回值:
一个通道,该通道将接收来自所有输入通道的数据。
说明:
Union 函数会启动多个 goroutine,每个 goroutine 从一个输入通道中读取数据 并将数据写入到返回的通道中。所有输入通道的数据都将被合并到这个返回的通道中。 当所有输入通道的数据都被读取完毕后,返回的通道将会被关闭。
func Unique ¶
Unique 去重, 要求传入的ch必须是排序过的 参数:
- f: 一个函数,接受两个类型为 T 的值,返回一个布尔值,表示是否相等。
- ch: 一个通道,用于接收数据。
返回:
- 一个通道,用于接收排序后的数据。
func UniqueCount ¶
UniqueCount 去重, 要求传入的ch必须是排序过的 参数:
- f: 一个函数,接受两个类型为 T 的值,返回一个布尔值,表示是否相等。
- ch: 一个通道,用于接收数据。
返回:
- 去重后的数量
func Walk ¶
func Walk[T any](f func(x T)) func(ch chan T)
Walk 对通道中的数据进行遍历操作。 参数:
- f: 一个函数,接受类型为 T 的输入。
- ch: 一个通道,通道中的每个值是类型为 T 的数据。
函数功能:
- 从输入通道 ch 中读取数据,对每个数据应用函数 f。
Types ¶
type ExcelField ¶
ExcelField Excel 文件配置
func E ¶
func E(path string) *ExcelField
func (*ExcelField) SetAppend ¶
func (e *ExcelField) SetAppend(append bool) *ExcelField
func (*ExcelField) SetExist ¶
func (e *ExcelField) SetExist(append bool) *ExcelField
func (*ExcelField) SetHeader ¶
func (e *ExcelField) SetHeader(header ...string) *ExcelField
func (*ExcelField) SetPath ¶
func (e *ExcelField) SetPath(path string) *ExcelField
func (*ExcelField) SetSheet ¶
func (e *ExcelField) SetSheet(sheet string) *ExcelField
type Pipeline ¶
type Pipeline[T any] struct { // contains filtered or unexported fields }
Pipeline 表示一系列处理步骤,可以对数据进行处理
func (*Pipeline[T]) AddStep ¶
func (p *Pipeline[T]) AddStep(f func(chan T) chan T)
AddStep 向管道中添加一个处理步骤。 参数:
step: 处理步骤函数,该函数接受一个输入通道,返回一个输出通道。
返回:
void
type TableField ¶
type TableField struct { Path string Seq string UseQuote bool Header []string Append bool Escape byte }
TableField 表格配置
func (*TableField) SetAppend ¶
func (t *TableField) SetAppend(append bool) *TableField
func (*TableField) SetEscape ¶
func (t *TableField) SetEscape(escape byte) *TableField
func (*TableField) SetHeader ¶
func (t *TableField) SetHeader(header ...string) *TableField
func (*TableField) SetPath ¶
func (t *TableField) SetPath(path string) *TableField
func (*TableField) SetSeq ¶
func (t *TableField) SetSeq(seq string) *TableField
func (*TableField) SetUseQuote ¶
func (t *TableField) SetUseQuote(useQuote bool) *TableField