From 6d02a9e47528210315cea4755b36b2a3073f38d4 Mon Sep 17 00:00:00 2001 From: Manuel Alejandro de Brito Fontes Date: Mon, 8 Apr 2019 10:11:44 -0400 Subject: [PATCH] Refactor isIterable --- internal/sets/match.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/internal/sets/match.go b/internal/sets/match.go index 3732176db..a8bae7c67 100644 --- a/internal/sets/match.go +++ b/internal/sets/match.go @@ -24,18 +24,19 @@ type equalFunction func(e1, e2 interface{}) bool // Compare checks if the parameters are iterable and contains the same elements func Compare(listA, listB interface{}, eq equalFunction) bool { - a := reflect.ValueOf(listA) - ok := isIterable(a) + ok := isIterable(listA) if !ok { return false } - b := reflect.ValueOf(listB) - ok = isIterable(b) + ok = isIterable(listB) if !ok { return false } + a := reflect.ValueOf(listA) + b := reflect.ValueOf(listB) + if a.IsNil() && b.IsNil() { return true } @@ -91,9 +92,9 @@ func StringElementsMatch(a, b []string) bool { return Compare(a, b, compareStrings) } -func isIterable(obj reflect.Value) bool { +func isIterable(obj interface{}) bool { switch reflect.TypeOf(obj).Kind() { - case reflect.Struct, reflect.Slice, reflect.Array: + case reflect.Slice, reflect.Array: return true default: return false