Author: Adam <git@apiote.xyz>
map of bool
main_test.go | 9 +++++++++ struct.go | 8 ++++----
diff --git a/main_test.go b/main_test.go index d4ac92e350dc73b04cf656b72951785023188cea..08259027601cfa22eefb894ed13a624ba4bc4bc4 100644 --- a/main_test.go +++ b/main_test.go @@ -470,6 +470,15 @@ m := map[uint64]int{} LoadStruct(r, &m) } +func TestShowLoadMapBool(t *testing.T) { + r := strings.NewReader(`( + (true 11) + (false 42) + )`) + m := map[bool]int{} + LoadStruct(r, &m) +} + func TestShowLoadArray(t *testing.T) { r := strings.NewReader(`(11 22 31)`) s := [3]int64{} diff --git a/struct.go b/struct.go index 49bfdbc040f819f77705f60f6865828dc81cd18d..09dc82631edc6cdabf6be1e6775a9f4d4c7c9152 100644 --- a/struct.go +++ b/struct.go @@ -30,13 +30,13 @@ return fieldName } func getStructMapKey(pair Array, mk reflect.Kind) reflect.Value { - sk := reflect.ValueOf(pair[0]).Kind() - if (sk == reflect.String && mk != reflect.String) || - (sk == reflect.Int && mk != reflect.Int && mk != reflect.Int8 && + sk := reflect.ValueOf(pair[0]).Type().String() + if (sk == "dirty.String" && mk != reflect.String) || + (sk == "dirty.Int" && mk != reflect.Int && mk != reflect.Int8 && mk != reflect.Int16 && mk != reflect.Int32 && mk != reflect.Int64 && mk != reflect.Uint && mk != reflect.Uint8 && mk != reflect.Uint16 && mk != reflect.Uint32 && mk != reflect.Uint64) || - (sk == reflect.Bool && mk != reflect.Bool) { + (sk == "dirty.Const" && mk != reflect.Bool) /*test sk ==dirty.Const but not dirty::Bool */ { // todo error fmt.Printf("pair[0] (%v) not map key (%v)\n", sk, mk) return reflect.ValueOf(nil)