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)