Awesome Go

goterator

CategoryData Structures and Algorithms
SubcategoryIterators
Stars0

Iterator implementation to provide map and reduce functionalities

About goterator

Goterator

Test and Build PkgGoDev

Iterator implementation for Golang to provide map and reduce functionalities.

Package

import (
    "github.com/yaa110/goterator"
    "github.com/yaa110/goterator/generator"
)

Getting Started

  • Create a generator from slices
words := []interface{}{"an", "example", "of", "goterator"}

gen := generator.NewSlice(words)
  • Create a generator from channels
chn := make(chan interface{}, 4)
chn <- "an"
chn <- "example"
chn <- "of"
chn <- "goterator"
close(chn)

gen := generator.NewChannel(chn)
  • Create custom generators
type TestGenerator struct {
    words []string
    i     int
    value string
}

func (g *TestGenerator) Next() bool {
    if g.i == len(g.words) {
        return false
    }
    g.value = g.words[g.i]
    g.i++
    return true
}

func (g *TestGenerator) Value() interface{} {
    return g.value
}

gen := &TestGenerator{
    words: []string{"an", "example", "of", "goterator"},
    i: 0,
    value: "",
}
  • Iterate over generators
lengths := goterator.New(gen).Map(func(word interface{}) interface{} {
    return len(word.(string))
}).Collect()

assert.Equal([]interface{}{2, 7, 2, 9}, lengths)

Please for more information about mappers and reducers (consumers) check the documentation.

Frequently Asked Questions

What is goterator?

goterator is a Data Structures and Algorithms library for the Go programming language. Iterator implementation to provide map and reduce functionalities

How do I install goterator?

Install goterator with the Go module system using `go get yaa110/goterator`. Check the repository for the current installation instructions.

What category does goterator belong to?

goterator is listed under Data Structures and Algorithms, specifically Iterators.

← Back to Iterators