chans

package
v0.2.15 Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2020 License: MIT Imports: 4 Imported by: 11

Documentation

Overview

Package chans は、チャネルに関するユーティリティが配置されています。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Bridge added in v0.1.5

func Bridge(done <-chan struct{}, chanCh <-chan <-chan interface{}) <-chan interface{}

Bridge -- 指定されたチャネルのシーケンスを順に消費していく単一のチャネルを返します。

func Chain added in v0.2.14

func Chain(done, base <-chan struct{}, next func(finishedTime time.Time)) <-chan struct{}

Chain -- 指定された base チャネルがクローズした後に next で指定された関数を呼び出します.

done チャネルがクローズした場合、 next は実行されません。

func Concat added in v0.1.7

func Concat(done <-chan struct{}, chList ...<-chan interface{}) <-chan interface{}

Concat -- 指定されたチャネルのシーケンスを順に消費していく単一のチャネルを返します。

func Enumerate added in v0.2.0

func Enumerate(done <-chan struct{}, in <-chan interface{}) <-chan interface{}

Enumerate -- 指定された入力チャネルの要素に対してインデックスを付与したデータを返すチャネルを生成します。

戻り値のチャネルから取得できるデータ型は、*chans.IterValue となっています。

for e := range chans.Enumerate(done, inCh) {
	if v, ok := e.(*IterValue); ok {
		// v.Index でインデックス、 v.Value で値が取得できる
	}
}

func FanIn added in v0.1.5

func FanIn(done <-chan struct{}, channels ...<-chan interface{}) <-chan interface{}

FanIn -- 指定されたチャネルリストをファンインするチャネルを返します。

func FanOut added in v0.2.1

func FanOut(done <-chan struct{}, in <-chan interface{}, workerCount int, callback func(interface{})) []<-chan struct{}

FanOut -- 指定されたチャネルの処理を指定されたワーカーの数でファンアウトします。

チャネルからデータを取得するたびに引数 callback が呼ばれます。

func FanOutWg added in v0.2.2

func FanOutWg(done <-chan struct{}, in <-chan interface{}, workerCount int, callback func(interface{})) *sync.WaitGroup

FanOutWg -- FanOut() の sync.WaitGroup を返す版です。

func Filter added in v0.2.0

func Filter(done <-chan struct{}, in <-chan interface{}, predicate func(interface{}) bool) <-chan interface{}

Filter -- 入力データチャネル in から取得したデータを predicate に渡して 真 となったデータを返すチャネルを生成します。

func ForEach added in v0.2.0

func ForEach(done <-chan struct{}, in ...interface{}) <-chan interface{}

ForEach -- 指定されたデータを出力するチャネルを生成します。

func FromIntCh added in v0.2.0

func FromIntCh(ch <-chan int) <-chan interface{}

FromIntCh -- chan int を chan interface{} に変換します。

func FromStringCh added in v0.2.0

func FromStringCh(ch <-chan string) <-chan interface{}

FromStringCh -- chan string を chan interface{} に変換します。

func Generator added in v0.2.5

func Generator(done <-chan struct{}, in ...interface{}) <-chan interface{}

Generator -- 指定されたデータを出力するチャネルを生成します。

ForEach関数のエイリアスです。

func Interval added in v0.2.0

func Interval(done <-chan struct{}, in <-chan interface{}, interval time.Duration) <-chan interface{}

Interval -- 指定した間隔でデータを出力していくチャネルを生成します。

func Loop added in v0.2.0

func Loop(done <-chan struct{}, start, end int) <-chan int

Loop -- 指定された開始と終了の間、データを返し続けるチャネルを生成します。

func LoopInfinite added in v0.2.0

func LoopInfinite(done <-chan struct{}) <-chan int

LoopInfinite -- 無限にループして、データを返し続けるチャネルを生成します。

func Map added in v0.2.0

func Map(done <-chan struct{}, in <-chan interface{}, fn MapFunc) <-chan interface{}

Map -- 関数 fn を入力チャネル in の各要素に適用した結果を返すチャネルを生成します。

戻り値のチャネルから取得できるデータ型は、*chans.MapValue となっています。

for m := range chans.Map(done, inCh, fn) {
	if v, ok := m.(*chans.MapValue); ok {
		// v.Before で元の値、 v.After で適用後の値が取得できる
	}
}

func OrDone added in v0.1.5

func OrDone(done <-chan struct{}, in <-chan interface{}) <-chan interface{}

OrDone -- 指定された終了チャネルと入力用チャネルのどちらかが閉じたら閉じるチャネルを返します。

func Repeat added in v0.1.5

func Repeat(done <-chan struct{}, values ...interface{}) <-chan interface{}

Repeat -- 指定した値を永遠と繰り返すチャネルを返します。

func RepeatFn added in v0.1.5

func RepeatFn(done <-chan struct{}, fn func() interface{}) <-chan interface{}

RepeatFn -- 指定した関数を永遠と繰り返し、その戻り値を返すチャネルを返します。

func Skip added in v0.2.0

func Skip(done <-chan struct{}, in <-chan interface{}, count int) <-chan interface{}

Skip -- 指定した個数分、入力用チャネルから値をスキップするチャネルを返します。

func SkipWhile added in v0.2.0

func SkipWhile(done <-chan struct{}, in <-chan interface{}, value interface{}) <-chan interface{}

SkipWhile -- 入力用チャネルから取得した値が指定した値と同一である間、値をスキップし続けるチャネルを返します。

func SkipWhileFn added in v0.2.0

func SkipWhileFn(done <-chan struct{}, in <-chan interface{}, fn func() interface{}) <-chan interface{}

SkipWhileFn -- 入力用チャネルから取得した値が指定した関数の戻り値と同一である間、値をスキップし続けるチャネルを返します。

func Take added in v0.1.5

func Take(done <-chan struct{}, in <-chan interface{}, count int) <-chan interface{}

Take -- 指定した個数分、入力用チャネルから値を取得するチャネルを返します。

func TakeWhile added in v0.1.5

func TakeWhile(done <-chan struct{}, in <-chan interface{}, value interface{}) <-chan interface{}

TakeWhile -- 入力用チャネルから取得した値が指定した値と同一である間、値を取得し続けるチャネルを返します。

func TakeWhileFn added in v0.1.5

func TakeWhileFn(done <-chan struct{}, in <-chan interface{}, fn func() interface{}) <-chan interface{}

TakeWhileFn -- 入力用チャネルから取得した値が指定した関数の戻り値と同一である間、値を取得し続けるチャネルを返します。

func Tee added in v0.1.5

func Tee(done <-chan struct{}, in <-chan interface{}) (<-chan interface{}, <-chan interface{})

Tee -- Unix の tee コマンドのように一つの入力を2つに複製するチャネルを返します。

noinspection GoNilness

func ToInt added in v0.1.5

func ToInt(done <-chan struct{}, in <-chan interface{}, failedValue int) <-chan int

ToInt -- 入力用チャネルから値を取得し、数値に変換するチャネルを返します。

数値に変換することが出来なかった場合は、引数 failedValue を出力用チャネルに送ります。

func ToString added in v0.1.5

func ToString(done <-chan struct{}, in <-chan interface{}, failedValue string) <-chan string

ToString -- 入力用チャネルから値を取得し、文字列に変換するチャネルを返します。

文字列に変換することが出来なかった場合は、引数 failedValue を出力用チャネルに送ります。

func WhenAll

func WhenAll(channels ...<-chan struct{}) <-chan struct{}

WhenAll -- 指定した1つ以上のチャネルの全てが閉じられたら、閉じるチャネルを返します。

チャネルを一つも渡さずに呼び出すと、既に close 済みのチャネルを返します。

func WhenAny

func WhenAny(channels ...<-chan struct{}) <-chan struct{}

WhenAny -- 指定した1つ以上のチャネルのどれかが1つが閉じられたら、閉じるチャネルを返します。

チャネルを一つも渡さずに呼び出すと、既に close 済みのチャネルを返します。

Types

type IterValue added in v0.2.0

type IterValue struct {
	Index int         // インデックス
	Value interface{} // 値
}

IterValue -- chans.Enumerate() にて利用されるデータ型です。

type MapFunc added in v0.2.0

type MapFunc func(interface{}) interface{}

MapFunc -- chans.Map にて利用されるチャネルの各要素に適用する関数です。

type MapValue added in v0.2.0

type MapValue struct {
	Before interface{} // 元の値
	After  interface{} // 適用後の値
}

MapValue -- chans.Map にて利用されるデータ型です。

Jump to

Keyboard shortcuts

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