Skip to content

nikgalushko/fx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fx

Status Coverage Status

Fx is a useful functional programming helpers without using interface{} or reflect.

Support only Go 1.18+.

Features

  • Slice
    • Each
    • Collect
    • Reduce
    • Find
    • Filter
    • Every
    • Some
    • Contains
    • Max
    • Min
    • GroupBy
    • Sample
    • SampleN
    • Union
    • Intersection
    • Uniq
    • IndexOf
    • LastIndexOf
    • Reverse
  • Map
    • Keys
    • Values
    • Each
    • Filter
  • Channel
    • Merge

Documentation

Documentation with examples can be found here: https://nikgalushko.github.io/fx/

Installation

slice helpers go get github.com/nikgalushko/fx/slice

map helpers go get github.com/nikgalushko/fx/kv

channel helpers go get github.com/nikgalushko/fx/ch

Usage

import (
  "fmt"

  "github.com/nikgalushko/fx/kv"
  "github.com/nikgalushko/fx/slice"
)

type (
  ID string

  Attribute struct {
    Value string
  }
)

func main() {
  m := map[ID]Attribute{
    ID("1"): {Value: "blah"},
    ID("1861"): {Value: "!"},
    ID("1234"): {Value: "yeah"},
  }

  fmt.Println("ids", kv.Keys(m), "contains special", slice.Contains(kv.Values(m), Attribute{Value: "!"}))
}