From 61a0d0ff031e89908192b034eadafd29831f52a7 Mon Sep 17 00:00:00 2001 From: Muyao CHEN Date: Fri, 20 Sep 2024 20:41:50 +0200 Subject: [PATCH] walk: deal with maps --- walk/walk.go | 4 ++++ walk/walk_test.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/walk/walk.go b/walk/walk.go index 07c39ba..57b3363 100644 --- a/walk/walk.go +++ b/walk/walk.go @@ -19,6 +19,10 @@ func Walk(x interface{}, fn func(string)) { case reflect.Slice, reflect.Array: numberOfValues = val.Len() getField = val.Index + case reflect.Map: + for _, key := range val.MapKeys() { + Walk(val.MapIndex(key).Interface(), fn) + } } for i := 0; i < numberOfValues; i++ { diff --git a/walk/walk_test.go b/walk/walk_test.go index 6e19e1b..1756ba6 100644 --- a/walk/walk_test.go +++ b/walk/walk_test.go @@ -70,6 +70,14 @@ func TestWalk(t *testing.T) { }, []string{"London", "Paris"}, }, + { + "maps", + map[string]string{ + "Cow": "meuh", + "Sheep": "meh", + }, + []string{"meuh", "meh"}, + }, } for _, test := range cases {