Code Monkey home page Code Monkey logo

goterators's Introduction

Goterators

Built with WeBuild Go Reference

goterators-Thumbnail

Requirement

  • Go 1.18

Installation

This assumes you already have a working Go environment.

Use Go get to pull goterators for using

go get github.com/ledongthuc/goterators

Usage

Import the package goterators into your project before using.

import "github.com/ledongthuc/goterators"

Functions

For-each

goterators-ForEach

  • For-each function does the same for in Go. Just another option to loop through items in a list.
ForEach(list1, func(item int) {
  // handle each item in the list
})

ForEach(list2, func(item string) {
  // handle each item in the list
})

ForEach(list3, func(item MyStruct) {
  // handle each item in the list
})

Find

goterators-Find

  • Find function returns the first element and its index in the list that meets the functional condition. If no element meet the condition function, return the error "Not Found".
matchedInt, index, err := Find(list, func(item int) bool {
  return item == 1
})

matchedString, index, err := Find(list, func(item string) bool {
  return item == "searching text"
})

matchedStruct, index, err := Find(list, func(item MyStruct) bool {
  return item == searchingStruct
})

Exist

goterators-Exist

  • Exist function checks the existence of an element in the list.
matchedInt, err := Exist(list, 1)

matchedString, err := Exist(list, "searching string")

matchedStruct, err := Exist(list, SearchingStruct)

Reduce

goterators-Reduce

  • Similar to Fold Left, Reduce function runs the reducer function on each element of the array. In order, the reduce function passes in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the array is the return value of the final reducer on the last element.
  • Reduce function has 3 parameters:
    • list: source list we want to process.
    • initial value: the previous value that's used in the reducer call of the first element. At this time, previous = initial value, current = first element of the list.
    • reducer function: the function will run on all elements of the source list.
// Sum
total := Reduce(list, 0, func(previous int, current int, index int, list []int) int {
	return previous + current
})

// Mapping ints to floats
items := Reduce(testSource, []float64{}, func(previous []float64, current int, index int, list []int) []float64 {
	return append(previous, float64(current))
})

Reduce right

goterators-Reduce right

  • Similar to Fold Right, Reduce right function run the reducer function on each element of the array, from last to the first element. In order, the reduce function passes in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the array is the return value of the final reducer on the first element.
  • Reduce function has 3 parameters:
    • list: source list we want to process.
    • initial value: the previous value that's used in the reducer call of the last element. At this time, previous = initial value, current = last element of list.
    • reducer function: the function will run on all elements of the source list.
// Reverse
reversedList := Reduce(list, []string{}, func(previous []string, current string, index int, list []string) []string {
  return append(list, current)
})

Filter

goterators-Filter

  • Filter function return items that pass the filter function.
filteredItems, err := Filter(list, func(item int) bool {
  return item % 2 == 0
})

filteredItems, err := Filter(list, func(item string) bool {
  return item.Contains("ValidWord")
})

filteredItems, err := Filter(list, func(item MyStruct) bool {
  return item.Valid()
})

Map

goterators-Map

  • Map function converts items in the list to the output list.
mappedItems := Map(testSource, func(item int64) float64 {
  return float64(item)
})

prices := Map(testSource, func(item Order) Price {
  return item.GetPrice()
})

Every

goterators-Every

  • Every function checks all elements in the list with condition function. If it's yes return true; otherwise, return false.
valid := Every(list, func(item int) bool { item % 2 == 0 }) 

valid := Every(list, func(item string) bool { len(item) < 20 }) 

Some

goterators-Some

  • Some function check at least one element in the list meet the condition; return true, or return false if all elements don't meet the condition.
valid := Some(list, func(item int) bool { item % 2 == 0 }) 

valid := Some(list, func(item string) bool { len(item) < 20 }) 

Group

goterators-Group

  • Group groups elements into the nested level. Use a build-group function to define group type.
groups := Group(list, func(item Product) groupKey {
   return item.ComposeGroupKey()
}) // Group contains [ [ Product1, Product2, Product3 ], [ Product4, Product5 ] ]

Flat

goterators-Flat

  • Flat returns a new array with all sub-array elements concatenated with 1 level depth.
output := Flat([][]int{{1,2}, {3}}) // output = {1,2,3}

License

MIT

Contribution

All your contributions to project and make it better, they are welcome. Feel free to reach me https://thuc.space or create an issue to start it.

Thanks! ๐Ÿ™Œ

Stargazers repo roster for @ledongthuc/goterators

goterators's People

Contributors

ledongthuc avatar cuonglm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.