Skip to content

Latest commit

 

History

History

maputil

Map Utils

maputil provide map data util functions. eg: convert, sub-value get, simple merge

  • use map[string]any as 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/...