Skip to content

joakim-ribier/go-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-utils

Go Report Card Software License Go Reference codecov

Go library that provides utilities functions to manipulate slices type, json serialization, io, and http calls.

Usage - Test - Thanks - License

Usage

The main goal is to make code cooler to write in implementations, have fun coding and discover a new language!

Run $ go get github.com/joakim-ribier/go-utils to add this library on your project.

Otherwise, you can download it and start $ go build ./... to work on.

genericsutil

// []User --> *User
genericsutil.When[[]User, *User](
	extractUsers(),
	func(utm []User) bool { return len(utm) > 0 },
	func(utm []User) *User { return &utm[0] },
	func() *User { return nil })

slicesutil

// []User --> []User
slicesutil.FilterT[User](users, func(u User) bool {
	return u.Age > 17
})

// []User --> *User
slicesutil.FindT[User](users, func(u User) bool {
	return u.Age == 2
})

// []User --> []User
slicesutil.SortT[User, int](_1, func(a, b User) (int, int) {
	return a.Age, b.Age
})

// []User --> []string
slicesutil.TransformT[User, string](users, func(u User) (*string, error) {
	return &u.Name, nil
})

Find more examples on the README.md (pkg/slicesutil).

Test

$ go test ./... -race -covermode=atomic -coverprofile=coverage.out
...
ok  	github.com/joakim-ribier/go-utils/pkg/cryptosutil	1.700s	coverage: 80.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/genericsutil	1.900s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/httpsutil	3.537s	coverage: 82.2% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/iosutil	2.425s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/jsonsutil	2.247s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/logsutil	2.140s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/mapsutil	2.580s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/slicesutil	2.953s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/stringsutil	2.770s	coverage: 100.0% of statements
ok  	github.com/joakim-ribier/go-utils/pkg/timesutil	3.880s	coverage: 100.0% of statements

Projects using go-utils

Thanks to

License

This software is licensed under the MIT license, see License for more information.

About

Library for Golang language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages