add support for slice and array field values
diff --git a/query/encode.go b/query/encode.go index 2b6da82..658bd4c 100644 --- a/query/encode.go +++ b/query/encode.go
@@ -40,7 +40,14 @@ sv = sv.Elem() } - values.Add(name, fmt.Sprint(sv.Interface())) + switch sv.Kind() { + case reflect.Slice, reflect.Array: + for i := 0; i < sv.Len(); i++ { + values.Add(name, fmt.Sprint(sv.Index(i))) + } + default: + values.Add(name, fmt.Sprint(sv.Interface())) + } } return values, nil
diff --git a/query/encode_test.go b/query/encode_test.go index 62db791..e6b8b6e 100644 --- a/query/encode_test.go +++ b/query/encode_test.go
@@ -16,7 +16,13 @@ D float32 E bool F *string - }{F: &str} + G []string + H [1]string + }{ + F: &str, + G: []string{"a", "b"}, + H: [1]string{"a"}, + } v, err := Values(s) if err != nil { t.Errorf("Values(%q) returned error: %v", s, err) @@ -29,6 +35,8 @@ "D": {"0"}, "E": {"false"}, "F": {"string"}, + "G": {"a", "b"}, + "H": {"a"}, } if !reflect.DeepEqual(want, v) { t.Errorf("Values(%q) returned %v, want %v", s, v, want)