Generics for go
A useful generic codes for go
Slice
- Map
- Reduce
- Any
- All
- BinarySearch
- Count
- Filter
- FilterIndex
- FirstOf
- FirstIndexOf
- LastOf
- LastIndexOf
- Reverse
- Foreach
- GroupBy
- Max
- Min
- Random
- Shuffle
- Sort
- Chunk
- Zip
- JoinToString
Set
- Add
- Remove
- Contains
- FromSlice
- FromMapKey
- FromMapValue
- ToSlice
- Union
- Intersect
- Subtract
- Equal
- IsSubset
- IsSuperset
- IsDisjoint
Table
- MapKey
- MapValue
- Reduce
- Any
- All
- Count
- Filter
- Foreach
- Random
- FromSlices
Result
- Success(T) Result[T]
- Failed(error) Result[T]
- Result[T].Ok() bool
- Result[T].Unwrap() T
- Result[T].Err() error
func main() {
a := result.Failed[int](errors.New("new error"))
fmt.Printf("ok: %v\n", a.Ok())
fmt.Printf("err: %v\n", a.Err())
fmt.Printf("value: %v\n", a.Unwrap())
fmt.Println()
a = result.Success(100)
fmt.Printf("ok: %v\n", a.Ok())
fmt.Printf("err: %v\n", a.Err())
fmt.Printf("value: %v\n", a.Unwrap())
}
ok: false
err: new error
value: 0
ok: true
err: <nil>
value: 100
more
Option
- Some(T) Result[T]
- None() Result[T]
- Result[T].Ok() bool
- Result[T].Unwrap() T
func main() {
a := option.Some("hello!")
fmt.Printf("ok: %v\n", a.Ok())
fmt.Printf("value: %v\n", a.Unwrap())
fmt.Println()
a = option.None[string]()
fmt.Printf("ok: %v\n", a.Ok())
fmt.Printf("value: %v\n", a.Unwrap())
}
ok: true
value: hello!
ok: false
value: 0
more