| description | usage-patterns-and-examples |
| name | usage-patterns-and-examples |
| user_invocable | false |
Usage Patterns and Examples
Usage Patterns and Examples
Installation in Your Project
go get -u github.com/Goldziher/go-utils
Common Usage Patterns
Working with Slices (JavaScript-style)
The sliceutils package provides familiar operations for developers coming from JavaScript:
import "github.com/Goldziher/go-utils/sliceutils"
numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
filtered := sliceutils.Filter(numbers, func(val int, idx int, slice []int) bool {
return val%2 == 0
})
doubled := sliceutils.Map(filtered, func(val int, idx int, slice []int) int {
return val * 2
})
sum := sliceutils.Reduce(numbers, func(acc int, cur int, idx int, slice []int) int {
return acc + cur
}, 0)
a := []int{1, 2, 3, 4}
b := []int{3, 4, 5, 6}
union := sliceutils.Union(a, b)
intersection := sliceutils.Intersection(a, b)
difference := sliceutils.Difference(a, b)
Working with Maps
import "github.com/Goldziher/go-utils/maputils"
data := map[string]int{"a": 1, "b": 2, "c": 3}
keys := maputils.Keys(data)
values := maputils.Values(data)
filtered := maputils.Filter(data, func(key string, value int) bool {
return value > 1
})
m1 := map[string]int{"a": 1, "b": 2}
m2 := map[string]int{"b": 3, "c": 4}
merged := maputils.Merge(m1, m2)
Working with Structs
import "github.com/Goldziher/go-utils/structutils"
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
user := User{Name: "Alice", Age: 30, Email: "alice@example.com"}
userMap := structutils.ToMap(user, "json")
URL Query String Building
import "github.com/Goldziher/go-utils/urlutils"
params := map[string]any{
"search": "golang",
"page": 1,
"tags": []string{"generics", "utils"},
}
query := urlutils.QueryStringifyMap(params)
type QueryParams struct {
Search string `qs:"q"`
Page int `qs:"page"`
Tags []string `qs:"tag"`
}
params := QueryParams{Search: "golang", Page: 1, Tags: []string{"generics", "utils"}}
query := urlutils.QueryStringifyStruct(params, "qs")
Type Safety with Generics
All functions provide compile-time type safety:
numbers := []int{1, 2, 3}
result := sliceutils.Map(numbers, func(val int, idx int, slice []int) string {
return strconv.Itoa(val)
})