mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-05-02 21:23:20 -04:00
The goutil that OpenCloud currently uses is one version from the release that adds FreeBSD support, this now compiles successfully on FreeBSD.
Map Utils
maputil provide map data util functions. eg: convert, sub-value get, simple merge
- use
map[string]anyas Data - deep get value by key path
- deep set value by key path
Install
go get github.com/gookit/goutil/maputil
Go docs
Usage
Deep get value
mp := map[string]any {
"top1": "val1",
"arr1": []string{"ab", "cd"}
"map1": map[string]any{
"sub1": "val2",
},
}
fmt.Println(maputil.DeepGet(mp, "map1.sub1")) // Output: VAL3
// get value from slice.
fmt.Println(maputil.DeepGet(mp, "arr1.1")) // Output: cd
fmt.Println(maputil.DeepGet(mp, "arr1[1]")) // Output: cd
Deep set value
mp := map[string]any {
"top1": "val1",
"arr1": []string{"ab"}
"map1": map[string]any{
"sub1": "val2",
},
}
err := maputil.SetByPath(&mp, "map1.newKey", "VAL3")
fmt.Println(maputil.DeepGet(mp, "map1.newKey")) // Output: VAL3
Code Check & Testing
gofmt -w -l ./
golint ./...
Testing:
go test -v ./maputil/...
Test limit by regexp:
go test -v -run ^TestSetByKeys ./maputil/...