stream

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2025 License: Apache-2.0 Imports: 5 Imported by: 0

README

stream - Stream Processing

WARNING: This package is experimental and may change in the future.

Package stream provides a Stream type and its variants. All of them are wrappers of iter - Iterator and Operations. With these wrappers we can call operations in method chaining style.

Quick Start

  1. Import "github.com/bytedance/gg/internal/stream".
  2. Use FromSlice to construct a stream of int slice.
  3. Use Filter to filter the zero values.
  4. Use ToSlice to convert filtered stream to slice, evaluation is done here.
package main

import (
        "fmt"

        "github.com/bytedance/gg/gvalue"
        "github.com/bytedance/gg/internal/stream"
)

func main() {
        s := stream.FromSlice([]int{0, 1, 2, 3, 4}).    // Construct a stream from int slice
                Filter(gvalue.IsNotZero[int]).              // Filter zero value lazily
                ToSlice()                               // Evaluate and convert back to slice

        fmt.Println(s)
        // Output:
        // [1 2 3 4]
}

API References

Sources, Operations and Sinks

All of sources, operations and sinks have their corresponding functions in iter - Iterator and Operations. For example:

  • Stream.Map is corresponding to iter.Map
  • String.Join is corresponding to iter.Join

So we won’t repeat them here.

Stream Variants

Stream has different variants depending on the element type. Variants may have additional sources or operations or sinks.

Type Variant
any Stream
comparable Comparable
constraints.Ordered Orderable
~bool Bool
~string String
map[comparable]any KV
map[constraints.Ordered]any OrderableKV

Limitation

Can not transform Stream from one type to another

We known iter.Map can transform an iter.Iter from type F to T. But in this package, Stream.Map can’t do.

According to the Type Parameters Proposal, method can not have additional type parameter. The following code is invalid for now:

func (s *Stream[F]) Map[T any](f func(F) T) *Stream[T]
// ERROR: methods cannot have type parameters

This means that we can not transform a stream from one type to another by method chaining.

golang/go#49085 discussed this matter, but there is no one given a good plan yet.

Lacking a better way for defining type-specialized variants

fold operation can be used for any type, but join operation is only for ~string. We can not add a Join method for Stream because its type constraint is already [T any] but not [T ~string].

So we create a variant String[T ~string] which has a Stream embedded in, then we implement a Join method for it. But the parameters of the method inherited from Stream is still stream.Stream[T], not stream.String[T]. For now, we rewrite these methods by code generation.

Documentation

Overview

Package stream provides a Stream type and its variants for stream processing.

Please refer to README.md for details.

Experimental: This package is experimental and may change in the future.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bool

type Bool[T ~bool] struct {
	Comparable[T]
}

Bool is a ~bool variant of Comparable.

func FromBoolChan

func FromBoolChan[T ~bool](ctx context.Context, ch <-chan T) Bool[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromBoolIter

func FromBoolIter[T ~bool](i iter.Iter[T]) Bool[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromBoolMapKeys

func FromBoolMapKeys[T ~bool, I any](m map[T]I) Bool[T]

See function github.com/bytedance/gg/internal/iter.FromMapKeys.

func FromBoolMapValues

func FromBoolMapValues[I comparable, T ~bool](m map[I]T) Bool[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromBoolSlice

func FromBoolSlice[T ~bool](s []T) Bool[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func RepeatBool

func RepeatBool[T ~bool](v T) Bool[T]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealBoolSlice

func StealBoolSlice[T ~bool](s []T) Bool[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (Bool[T]) And

func (s Bool[T]) And() bool

See function github.com/bytedance/gg/internal/iter.And.

func (Bool[T]) Append

func (s Bool[T]) Append(tail T) Bool[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (Bool[T]) Concat

func (s Bool[T]) Concat(ss ...Bool[T]) Bool[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (Bool[T]) Drop

func (s Bool[T]) Drop(n int) Bool[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (Bool[T]) DropWhile

func (s Bool[T]) DropWhile(f func(T) bool) Bool[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (Bool[T]) Filter

func (s Bool[T]) Filter(f func(T) bool) Bool[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (Bool[T]) FlatMap

func (s Bool[T]) FlatMap(f func(T) []T) Bool[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Bool[T]) Intersperse

func (s Bool[T]) Intersperse(sep T) Bool[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (Bool[T]) Map

func (s Bool[T]) Map(f func(T) T) Bool[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (Bool[T]) Or

func (s Bool[T]) Or() bool

See function github.com/bytedance/gg/internal/iter.Or.

func (Bool[T]) Prepend

func (s Bool[T]) Prepend(head T) Bool[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (Bool[T]) Reverse

func (s Bool[T]) Reverse() Bool[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (Bool[T]) Shuffle

func (s Bool[T]) Shuffle() Bool[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (Bool[T]) SortBy

func (s Bool[T]) SortBy(less func(T, T) bool) Bool[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (Bool[T]) Take

func (s Bool[T]) Take(n int) Bool[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (Bool[T]) TakeWhile

func (s Bool[T]) TakeWhile(f func(T) bool) Bool[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (Bool[T]) Zip

func (s Bool[T]) Zip(f func(T, T) T, another Bool[T]) Bool[T]

See function github.com/bytedance/gg/internal/iter.Zip.

type Comparable

type Comparable[T comparable] struct {
	Stream[T]
}

Comparable is a comparable variant of Stream.

func FromComparableChan

func FromComparableChan[T comparable](ctx context.Context, ch <-chan T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromComparableIter

func FromComparableIter[T comparable](i iter.Iter[T]) Comparable[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromComparableMapValues

func FromComparableMapValues[I comparable, T comparable](m map[I]T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromComparableSlice

func FromComparableSlice[T comparable](s []T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func FromMapKeys

func FromMapKeys[T comparable, I any](m map[T]I) Comparable[T]

See function github.com/bytedance/gg/internal/iter.FromMapKeys.

func RepeatComparable

func RepeatComparable[T comparable](v T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealComparableSlice

func StealComparableSlice[T comparable](s []T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (Comparable[T]) Append

func (s Comparable[T]) Append(tail T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (Comparable[T]) Concat

func (s Comparable[T]) Concat(ss ...Comparable[T]) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (Comparable[T]) Contains

func (s Comparable[T]) Contains(v T) bool

See function github.com/bytedance/gg/internal/iter.Contains.

func (Comparable[T]) ContainsAll

func (s Comparable[T]) ContainsAll(vs ...T) bool

See function github.com/bytedance/gg/internal/iter.ContainsAll.

func (Comparable[T]) ContainsAny

func (s Comparable[T]) ContainsAny(vs ...T) bool

See function github.com/bytedance/gg/internal/iter.ContainsAny.

func (Comparable[T]) Drop

func (s Comparable[T]) Drop(n int) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (Comparable[T]) DropWhile

func (s Comparable[T]) DropWhile(f func(T) bool) Comparable[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (Comparable[T]) Filter

func (s Comparable[T]) Filter(f func(T) bool) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (Comparable[T]) FlatMap

func (s Comparable[T]) FlatMap(f func(T) []T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Comparable[T]) Intersperse

func (s Comparable[T]) Intersperse(sep T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (Comparable[T]) Map

func (s Comparable[T]) Map(f func(T) T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (Comparable[T]) Prepend

func (s Comparable[T]) Prepend(head T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (Comparable[T]) Remove

func (s Comparable[T]) Remove(v T) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Remove.

func (Comparable[T]) RemoveN

func (s Comparable[T]) RemoveN(v T, n int) Comparable[T]

See function github.com/bytedance/gg/internal/iter.RemoveN.

func (Comparable[T]) Reverse

func (s Comparable[T]) Reverse() Comparable[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (Comparable[T]) Shuffle

func (s Comparable[T]) Shuffle() Comparable[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (Comparable[T]) SortBy

func (s Comparable[T]) SortBy(less func(T, T) bool) Comparable[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (Comparable[T]) Take

func (s Comparable[T]) Take(n int) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (Comparable[T]) TakeWhile

func (s Comparable[T]) TakeWhile(f func(T) bool) Comparable[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (Comparable[T]) Uniq

func (s Comparable[T]) Uniq() Comparable[T]

See function github.com/bytedance/gg/internal/iter.Uniq.

func (Comparable[T]) UniqBy

func (s Comparable[T]) UniqBy(f func(T) any) Comparable[T]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (Comparable[T]) Zip

func (s Comparable[T]) Zip(f func(T, T) T, another Comparable[T]) Comparable[T]

See function github.com/bytedance/gg/internal/iter.Zip.

type KV

type KV[K comparable, V any] struct {
	Stream[tuple.T2[K, V]]
}

KV is a tuple.T2[K, V] variant of Stream.

func FromKVChan

func FromKVChan[K comparable, V any](ctx context.Context, ch <-chan tuple.T2[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromKVIter

func FromKVIter[K comparable, V any](i iter.Iter[tuple.T2[K, V]]) KV[K, V]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromKVSlice

func FromKVSlice[K comparable, V any](s []tuple.T2[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func FromMap

func FromMap[K comparable, V any](m map[K]V) KV[K, V]

See function github.com/bytedance/gg/internal/iter.FromMap.

func RepeatKV

func RepeatKV[K comparable, V any](k K, v V) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealKVSlice

func StealKVSlice[K comparable, V any](s []tuple.T2[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (KV[K, V]) All

func (s KV[K, V]) All(f func(K, V) bool) bool

See function github.com/bytedance/gg/internal/iter.All.

func (KV[K, V]) Any

func (s KV[K, V]) Any(f func(K, V) bool) bool

See function github.com/bytedance/gg/internal/iter.Any.

func (KV[K, V]) Append

func (s KV[K, V]) Append(tailK K, tailV V) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Append.

func (KV[K, V]) Concat

func (s KV[K, V]) Concat(ss ...KV[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Concat.

func (KV[K, V]) Drop

func (s KV[K, V]) Drop(n int) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Drop.

func (KV[K, V]) DropWhile

func (s KV[K, V]) DropWhile(f func(K, V) bool) KV[K, V]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (KV[K, V]) Filter

func (s KV[K, V]) Filter(f func(K, V) bool) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Filter.

func (KV[K, V]) Find

func (s KV[K, V]) Find(f func(K, V) bool) goption.O[tuple.T2[K, V]]

See function github.com/bytedance/gg/internal/iter.Find.

func (KV[K, V]) FlatMap

func (s KV[K, V]) FlatMap(f func(tuple.T2[K, V]) []tuple.T2[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (KV[K, V]) Fold

func (s KV[K, V]) Fold(f func(K, V, K, V) (K, V), initK K, initV V) tuple.T2[K, V]

See function github.com/bytedance/gg/internal/iter.Fold.

func (KV[K, V]) ForEach

func (s KV[K, V]) ForEach(f func(K, V))

See function github.com/bytedance/gg/internal/iter.ForEach.

func (KV[K, V]) ForEachIndexed

func (s KV[K, V]) ForEachIndexed(f func(int, K, V))

See function github.com/bytedance/gg/internal/iter.ForEachIndexed.

func (KV[K, V]) Intersperse

func (s KV[K, V]) Intersperse(sepK K, sepV V) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (KV[K, V]) Keys

func (s KV[K, V]) Keys() Comparable[K]

Keys returns stream of key.

func (KV[K, V]) Map

func (s KV[K, V]) Map(f func(k K, v V) (K, V)) KV[K, V]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (KV[K, V]) Prepend

func (s KV[K, V]) Prepend(tailK K, tailV V) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (KV[K, V]) Reduce

func (s KV[K, V]) Reduce(f func(K, V, K, V) (K, V)) goption.O[tuple.T2[K, V]]

See function github.com/bytedance/gg/internal/iter.Reduce.

func (KV[K, V]) Reverse

func (s KV[K, V]) Reverse() KV[K, V]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (KV[K, V]) Shuffle

func (s KV[K, V]) Shuffle() KV[K, V]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (KV[K, V]) SortBy

func (s KV[K, V]) SortBy(less func(K, V, K, V) bool) KV[K, V]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (KV[K, V]) Take

func (s KV[K, V]) Take(n int) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Take.

func (KV[K, V]) TakeWhile

func (s KV[K, V]) TakeWhile(f func(K, V) bool) KV[K, V]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (KV[K, V]) ToMap

func (s KV[K, V]) ToMap() map[K]V

See function github.com/bytedance/gg/internal/iter.KVToMap.

func (KV[K, V]) UniqBy

func (s KV[K, V]) UniqBy(f func(K, V) any) KV[K, V]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (KV[K, V]) Values

func (s KV[K, V]) Values() Stream[V]

Values returns stream of value.

func (KV[K, V]) Zip

func (s KV[K, V]) Zip(f func(K, V, K, V) (K, V), another KV[K, V]) KV[K, V]

See function github.com/bytedance/gg/internal/iter.Zip.

type Number

type Number[T constraints.Number] struct {
	Orderable[T]
}

Number is a constraints.Number variant of Orderable.

func FromNumberChan

func FromNumberChan[T constraints.Number](ctx context.Context, ch <-chan T) Number[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromNumberIter

func FromNumberIter[T constraints.Number](i iter.Iter[T]) Number[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromNumberMapKeys

func FromNumberMapKeys[T constraints.Number, I any](m map[T]I) Number[T]

See function github.com/bytedance/gg/internal/iter.FromMapKeys.

func FromNumberMapValues

func FromNumberMapValues[I comparable, T constraints.Number](m map[I]T) Number[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromNumberSlice

func FromNumberSlice[T constraints.Number](s []T) Number[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func Range

func Range[T constraints.Number](start, stop T) Number[T]

See function github.com/bytedance/gg/internal/iter.Range.

func RangeWithStep

func RangeWithStep[T constraints.Number](start, stop, step T) Number[T]

See function github.com/bytedance/gg/internal/iter.RangeWithStep.

func RepeatNumber

func RepeatNumber[T constraints.Number](v T) Number[T]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealNumberSlice

func StealNumberSlice[T constraints.Number](s []T) Number[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (Number[T]) Append

func (s Number[T]) Append(tail T) Number[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (Number[T]) Avg

func (s Number[T]) Avg() float64

See function github.com/bytedance/gg/internal/iter.Avg.

func (Number[T]) Concat

func (s Number[T]) Concat(ss ...Number[T]) Number[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (Number[T]) Drop

func (s Number[T]) Drop(n int) Number[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (Number[T]) DropWhile

func (s Number[T]) DropWhile(f func(T) bool) Number[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (Number[T]) Filter

func (s Number[T]) Filter(f func(T) bool) Number[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (Number[T]) FlatMap

func (s Number[T]) FlatMap(f func(T) []T) Number[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Number[T]) Intersperse

func (s Number[T]) Intersperse(sep T) Number[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (Number[T]) Map

func (s Number[T]) Map(f func(T) T) Number[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (Number[T]) Prepend

func (s Number[T]) Prepend(head T) Number[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (Number[T]) Remove

func (s Number[T]) Remove(v T) Number[T]

See function github.com/bytedance/gg/internal/iter.Remove.

func (Number[T]) RemoveN

func (s Number[T]) RemoveN(v T, n int) Number[T]

See function github.com/bytedance/gg/internal/iter.RemoveN.

func (Number[T]) Reverse

func (s Number[T]) Reverse() Number[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (Number[T]) Shuffle

func (s Number[T]) Shuffle() Number[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (Number[T]) Sort

func (s Number[T]) Sort() Number[T]

See function github.com/bytedance/gg/internal/iter.Sort.

func (Number[T]) SortBy

func (s Number[T]) SortBy(less func(T, T) bool) Number[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (Number[T]) Sum

func (s Number[T]) Sum() T

See function github.com/bytedance/gg/internal/iter.Sum.

func (Number[T]) Take

func (s Number[T]) Take(n int) Number[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (Number[T]) TakeWhile

func (s Number[T]) TakeWhile(f func(T) bool) Number[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (Number[T]) Uniq

func (s Number[T]) Uniq() Number[T]

See function github.com/bytedance/gg/internal/iter.Uniq.

func (Number[T]) UniqBy

func (s Number[T]) UniqBy(f func(T) any) Number[T]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (Number[T]) Zip

func (s Number[T]) Zip(f func(T, T) T, another Number[T]) Number[T]

See function github.com/bytedance/gg/internal/iter.Zip.

type Orderable

type Orderable[T constraints.Ordered] struct {
	Comparable[T]
}

Orderable is a constraints.Ordered variant of Comparable.

func FromOrderableChan

func FromOrderableChan[T constraints.Ordered](ctx context.Context, ch <-chan T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromOrderableIter

func FromOrderableIter[T constraints.Ordered](i iter.Iter[T]) Orderable[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromOrderableMapKeys

func FromOrderableMapKeys[T constraints.Ordered, I any](m map[T]I) Orderable[T]

See function github.com/bytedance/gg/internal/iter.FromMapKeys.

func FromOrderableMapValues

func FromOrderableMapValues[I comparable, T constraints.Ordered](m map[I]T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromOrderableSlice

func FromOrderableSlice[T constraints.Ordered](s []T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func StealOrderableSlice

func StealOrderableSlice[T constraints.Ordered](s []T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (Orderable[T]) Append

func (s Orderable[T]) Append(tail T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (Orderable[T]) Concat

func (s Orderable[T]) Concat(ss ...Orderable[T]) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (Orderable[T]) Drop

func (s Orderable[T]) Drop(n int) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (Orderable[T]) DropWhile

func (s Orderable[T]) DropWhile(f func(T) bool) Orderable[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (Orderable[T]) Filter

func (s Orderable[T]) Filter(f func(T) bool) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (Orderable[T]) FlatMap

func (s Orderable[T]) FlatMap(f func(T) []T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Orderable[T]) Intersperse

func (s Orderable[T]) Intersperse(sep T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (Orderable[T]) Map

func (s Orderable[T]) Map(f func(T) T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (Orderable[T]) Max

func (s Orderable[T]) Max() goption.O[T]

See function github.com/bytedance/gg/internal/iter.Max.

func (Orderable[T]) Min

func (s Orderable[T]) Min() goption.O[T]

See function github.com/bytedance/gg/internal/iter.Min.

func (Orderable[T]) MinMax

func (s Orderable[T]) MinMax() goption.O[tuple.T2[T, T]]

See function github.com/bytedance/gg/internal/iter.MinMax.

func (Orderable[T]) Prepend

func (s Orderable[T]) Prepend(head T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (Orderable[T]) Remove

func (s Orderable[T]) Remove(v T) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Remove.

func (Orderable[T]) RemoveN

func (s Orderable[T]) RemoveN(v T, n int) Orderable[T]

See function github.com/bytedance/gg/internal/iter.RemoveN.

func (Orderable[T]) Reverse

func (s Orderable[T]) Reverse() Orderable[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (Orderable[T]) Shuffle

func (s Orderable[T]) Shuffle() Orderable[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (Orderable[T]) Sort

func (s Orderable[T]) Sort() Orderable[T]

See function github.com/bytedance/gg/internal/iter.Sort.

func (Orderable[T]) SortBy

func (s Orderable[T]) SortBy(less func(T, T) bool) Orderable[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (Orderable[T]) Take

func (s Orderable[T]) Take(n int) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (Orderable[T]) TakeWhile

func (s Orderable[T]) TakeWhile(f func(T) bool) Orderable[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (Orderable[T]) Uniq

func (s Orderable[T]) Uniq() Orderable[T]

See function github.com/bytedance/gg/internal/iter.Uniq.

func (Orderable[T]) UniqBy

func (s Orderable[T]) UniqBy(f func(T) any) Orderable[T]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (Orderable[T]) Zip

func (s Orderable[T]) Zip(f func(T, T) T, another Orderable[T]) Orderable[T]

See function github.com/bytedance/gg/internal/iter.Zip.

type OrderableKV

type OrderableKV[K constraints.Ordered, V any] struct {
	KV[K, V]
}

OrderableKV is a tuple.T2[K, V] variant of KV.

func FromOrderableKVChan

func FromOrderableKVChan[K constraints.Ordered, V any](ctx context.Context, ch <-chan tuple.T2[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromOrderableKVIter

func FromOrderableKVIter[K constraints.Ordered, V any](i iter.Iter[tuple.T2[K, V]]) OrderableKV[K, V]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromOrderableKVSlice

func FromOrderableKVSlice[K constraints.Ordered, V any](s []tuple.T2[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func FromOrderableMap

func FromOrderableMap[K constraints.Ordered, V any](m map[K]V) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.FromMap.

func RepeatOrderableKV

func RepeatOrderableKV[K constraints.Ordered, V any](k K, v V) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealOrderableKVSlice

func StealOrderableKVSlice[K constraints.Ordered, V any](s []tuple.T2[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (OrderableKV[K, V]) Append

func (s OrderableKV[K, V]) Append(tailK K, tailV V) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Append.

func (OrderableKV[K, V]) Concat

func (s OrderableKV[K, V]) Concat(ss ...OrderableKV[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Concat.

func (OrderableKV[K, V]) Drop

func (s OrderableKV[K, V]) Drop(n int) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Drop.

func (OrderableKV[K, V]) DropWhile

func (s OrderableKV[K, V]) DropWhile(f func(K, V) bool) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (OrderableKV[K, V]) Filter

func (s OrderableKV[K, V]) Filter(f func(K, V) bool) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Filter.

func (OrderableKV[K, V]) FlatMap

func (s OrderableKV[K, V]) FlatMap(f func(tuple.T2[K, V]) []tuple.T2[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (OrderableKV[K, V]) Intersperse

func (s OrderableKV[K, V]) Intersperse(sepK K, sepV V) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (OrderableKV[K, V]) Keys

func (s OrderableKV[K, V]) Keys() Orderable[K]

Keys returns stream of key.

func (OrderableKV[K, V]) Map

func (s OrderableKV[K, V]) Map(f func(k K, v V) (K, V)) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (OrderableKV[K, V]) Prepend

func (s OrderableKV[K, V]) Prepend(tailK K, tailV V) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (OrderableKV[K, V]) Reverse

func (s OrderableKV[K, V]) Reverse() OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (OrderableKV[K, V]) Shuffle

func (s OrderableKV[K, V]) Shuffle() OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (OrderableKV[K, V]) Sort

func (s OrderableKV[K, V]) Sort() OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Sort.

func (OrderableKV[K, V]) SortBy

func (s OrderableKV[K, V]) SortBy(less func(K, V, K, V) bool) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (OrderableKV[K, V]) Take

func (s OrderableKV[K, V]) Take(n int) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Take.

func (OrderableKV[K, V]) TakeWhile

func (s OrderableKV[K, V]) TakeWhile(f func(K, V) bool) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (OrderableKV[K, V]) UniqBy

func (s OrderableKV[K, V]) UniqBy(f func(K, V) any) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (OrderableKV[K, V]) Zip

func (s OrderableKV[K, V]) Zip(f func(K, V, K, V) (K, V), another OrderableKV[K, V]) OrderableKV[K, V]

See function github.com/bytedance/gg/internal/iter.Zip.

type Stream

type Stream[T any] struct {
	iter.Iter[T]
}

Stream is a wrapper of github.com/bytedance/gg/internal/iter.Iter with method chaining support.

Stream has various variants like Comparable, Bool, String and etc. See README.md for more details.

Example

Filter zero value.

s := FromSlice([]int{0, 1, 2, 3, 4}).
	Filter(gvalue.IsNotZero[int]).
	ToSlice()

fmt.Println(s)
Output:

[1 2 3 4]

func FromChan

func FromChan[T any](ctx context.Context, ch <-chan T) Stream[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromIter

func FromIter[T any](i iter.Iter[T]) Stream[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

Example
s := FromIter(iter.Map(strconv.Itoa, iter.Range(1, 6))).
	Intersperse(", ").
	Prepend("[").
	Append("]").
	Fold(gvalue.Add[string], "")

fmt.Println(s)
Output:

[1, 2, 3, 4, 5]

func FromMapValues

func FromMapValues[I comparable, T any](m map[I]T) Stream[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromSlice

func FromSlice[T any](s []T) Stream[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

Example
add := gvalue.Add[int]                 // instantiate a int version of Add function
add1 := gfunc.Partial2(add).Partial(1) // bind the first argument to 1
s := FromSlice([]int{1, 2, 3, 4}).
	Map(add1).
	ToSlice()

fmt.Println(s)
Output:

[2 3 4 5]

func Repeat

func Repeat[T any](v T) Stream[T]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealSlice

func StealSlice[T any](s []T) Stream[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (Stream[T]) All

func (s Stream[T]) All(f func(T) bool) bool

See function github.com/bytedance/gg/internal/iter.All.

func (Stream[T]) Any

func (s Stream[T]) Any(f func(T) bool) bool

See function github.com/bytedance/gg/internal/iter.Any.

func (Stream[T]) Append

func (s Stream[T]) Append(tail T) Stream[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (Stream[T]) At

func (s Stream[T]) At(idx int) goption.O[T]

See function github.com/bytedance/gg/internal/iter.At.

func (Stream[T]) Chunk

func (s Stream[T]) Chunk(n int) [][]T

See function github.com/bytedance/gg/internal/iter.Chunk.

FIXME: Returning a Stream[[]T] causes instantiation cycle of type parameters.

func (Stream[T]) Concat

func (s Stream[T]) Concat(ss ...Stream[T]) Stream[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (Stream[T]) Count

func (s Stream[T]) Count() int

See function github.com/bytedance/gg/internal/iter.Count.

func (Stream[T]) Divide

func (s Stream[T]) Divide(n int) [][]T

See function github.com/bytedance/gg/internal/iter.Divide.

FIXME: Returning a Stream[[]T] causes instantiation cycle of type parameters.

func (Stream[T]) Drop

func (s Stream[T]) Drop(n int) Stream[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (Stream[T]) DropWhile

func (s Stream[T]) DropWhile(f func(T) bool) Stream[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (Stream[T]) Filter

func (s Stream[T]) Filter(f func(T) bool) Stream[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (Stream[T]) Find

func (s Stream[T]) Find(f func(T) bool) goption.O[T]

See function github.com/bytedance/gg/internal/iter.Find.

func (Stream[T]) FlatMap

func (s Stream[T]) FlatMap(f func(T) []T) Stream[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Stream[T]) FlatMapToAny

func (s Stream[T]) FlatMapToAny(f func(T) []any) Stream[any]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (Stream[T]) Fold

func (s Stream[T]) Fold(f func(T, T) T, init T) T

See function github.com/bytedance/gg/internal/iter.Fold.

func (Stream[T]) FoldToAnyWith

func (s Stream[T]) FoldToAnyWith(f func(any, T) any, init any) any

See function github.com/bytedance/gg/internal/iter.Fold.

func (Stream[T]) ForEach

func (s Stream[T]) ForEach(f func(T))

See function github.com/bytedance/gg/internal/iter.ForEach.

func (Stream[T]) ForEachIndexed

func (s Stream[T]) ForEachIndexed(f func(int, T))

See function github.com/bytedance/gg/internal/iter.ForEachIndexed.

func (Stream[T]) GroupBy

func (s Stream[T]) GroupBy(f func(T) any) map[any][]T

See function github.com/bytedance/gg/internal/iter.GroupBy.

func (Stream[T]) Head

func (s Stream[T]) Head() goption.O[T]

See function github.com/bytedance/gg/internal/iter.Head.

func (Stream[T]) Intersperse

func (s Stream[T]) Intersperse(sep T) Stream[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (Stream[T]) Map

func (s Stream[T]) Map(f func(T) T) Stream[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (Stream[T]) MapToAny

func (s Stream[T]) MapToAny(f func(T) any) Stream[any]

See function github.com/bytedance/gg/internal/iter.Map.

func (Stream[T]) MaxBy

func (s Stream[T]) MaxBy(less func(T, T) bool) goption.O[T]

See function github.com/bytedance/gg/internal/iter.MaxBy.

func (Stream[T]) MinBy

func (s Stream[T]) MinBy(less func(T, T) bool) goption.O[T]

See function github.com/bytedance/gg/internal/iter.MinBy.

func (Stream[T]) MinMaxBy

func (s Stream[T]) MinMaxBy(less func(T, T) bool) goption.O[tuple.T2[T, T]]

See function github.com/bytedance/gg/internal/iter.MinMaxBy.

func (Stream[T]) Prepend

func (s Stream[T]) Prepend(head T) Stream[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (Stream[T]) Reduce

func (s Stream[T]) Reduce(f func(T, T) T) goption.O[T]

See function github.com/bytedance/gg/internal/iter.Reduce.

func (Stream[T]) Reverse

func (s Stream[T]) Reverse() Stream[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (Stream[T]) Shuffle

func (s Stream[T]) Shuffle() Stream[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (Stream[T]) SortBy

func (s Stream[T]) SortBy(less func(T, T) bool) Stream[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (Stream[T]) Take

func (s Stream[T]) Take(n int) Stream[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (Stream[T]) TakeWhile

func (s Stream[T]) TakeWhile(f func(T) bool) Stream[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (Stream[T]) ToBufferedChan

func (s Stream[T]) ToBufferedChan(ctx context.Context, size int) <-chan T

See function github.com/bytedance/gg/internal/iter.ToBufferedChan.

func (Stream[T]) ToChan

func (s Stream[T]) ToChan(ctx context.Context) <-chan T

See function github.com/bytedance/gg/internal/iter.ToChan.

func (Stream[T]) ToSlice

func (s Stream[T]) ToSlice() []T

See function github.com/bytedance/gg/internal/iter.ToSlice.

func (Stream[T]) UniqBy

func (s Stream[T]) UniqBy(f func(T) any) Stream[T]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (Stream[T]) Zip

func (s Stream[T]) Zip(f func(T, T) T, another Stream[T]) Stream[T]

See function github.com/bytedance/gg/internal/iter.Zip.

type String

type String[T ~string] struct {
	Orderable[T]
}

String is a ~string variant of Orderable.

func FromStringChan

func FromStringChan[T ~string](ctx context.Context, ch <-chan T) String[T]

See function github.com/bytedance/gg/internal/iter.FromChan.

func FromStringIter

func FromStringIter[T ~string](i iter.Iter[T]) String[T]

FromIter wraps an github.com/bytedance/gg/internal/iter.Iter to Stream.

func FromStringMapKeys

func FromStringMapKeys[T ~string, I any](m map[T]I) String[T]

See function github.com/bytedance/gg/internal/iter.FromMapKeys.

func FromStringMapValues

func FromStringMapValues[I comparable, T ~string](m map[I]T) String[T]

See function github.com/bytedance/gg/internal/iter.FromMapValues.

func FromStringSlice

func FromStringSlice[T ~string](s []T) String[T]

See function github.com/bytedance/gg/internal/iter.FromSlice.

func RepeatString

func RepeatString[T ~string](v T) String[T]

See function github.com/bytedance/gg/internal/iter.Repeat.

func StealStringSlice

func StealStringSlice[T ~string](s []T) String[T]

See function github.com/bytedance/gg/internal/iter.StealSlice.

func (String[T]) Append

func (s String[T]) Append(tail T) String[T]

See function github.com/bytedance/gg/internal/iter.Append.

func (String[T]) Concat

func (s String[T]) Concat(ss ...String[T]) String[T]

See function github.com/bytedance/gg/internal/iter.Concat.

func (String[T]) Drop

func (s String[T]) Drop(n int) String[T]

See function github.com/bytedance/gg/internal/iter.Drop.

func (String[T]) DropWhile

func (s String[T]) DropWhile(f func(T) bool) String[T]

See function github.com/bytedance/gg/internal/iter.DropWhile.

func (String[T]) Filter

func (s String[T]) Filter(f func(T) bool) String[T]

See function github.com/bytedance/gg/internal/iter.Filter.

func (String[T]) FlatMap

func (s String[T]) FlatMap(f func(T) []T) String[T]

See function github.com/bytedance/gg/internal/iter.FlatMap.

func (String[T]) Intersperse

func (s String[T]) Intersperse(sep T) String[T]

See function github.com/bytedance/gg/internal/iter.Intersperse.

func (String[T]) Join

func (s String[T]) Join(sep T) T

See function github.com/bytedance/gg/internal/iter.Join.

func (String[T]) Map

func (s String[T]) Map(f func(T) T) String[T]

See function github.com/bytedance/gg/internal/iter.MapInplace.

func (String[T]) Prepend

func (s String[T]) Prepend(head T) String[T]

See function github.com/bytedance/gg/internal/iter.Prepend.

func (String[T]) Remove

func (s String[T]) Remove(v T) String[T]

See function github.com/bytedance/gg/internal/iter.Remove.

func (String[T]) RemoveN

func (s String[T]) RemoveN(v T, n int) String[T]

See function github.com/bytedance/gg/internal/iter.RemoveN.

func (String[T]) Reverse

func (s String[T]) Reverse() String[T]

See function github.com/bytedance/gg/internal/iter.Reverse.

func (String[T]) Shuffle

func (s String[T]) Shuffle() String[T]

See function github.com/bytedance/gg/internal/iter.Shuffle.

func (String[T]) Sort

func (s String[T]) Sort() String[T]

See function github.com/bytedance/gg/internal/iter.Sort.

func (String[T]) SortBy

func (s String[T]) SortBy(less func(T, T) bool) String[T]

See function github.com/bytedance/gg/internal/iter.SortBy.

func (String[T]) Take

func (s String[T]) Take(n int) String[T]

See function github.com/bytedance/gg/internal/iter.Take.

func (String[T]) TakeWhile

func (s String[T]) TakeWhile(f func(T) bool) String[T]

See function github.com/bytedance/gg/internal/iter.TakeWhile.

func (String[T]) Uniq

func (s String[T]) Uniq() String[T]

See function github.com/bytedance/gg/internal/iter.Uniq.

func (String[T]) UniqBy

func (s String[T]) UniqBy(f func(T) any) String[T]

See function github.com/bytedance/gg/internal/iter.UniqBy.

func (String[T]) Zip

func (s String[T]) Zip(f func(T, T) T, another String[T]) String[T]

See function github.com/bytedance/gg/internal/iter.Zip.

Jump to

Keyboard shortcuts

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