code: func generalizedWhere(funcName string, entries interface{}, key string, test func(interface{}) bool) (interface{}, error) {
  	entriesVal, err := getArrayValues(funcName, entries)
  
  	if err != nil {
  		return nil, err
  	}
  
  	selection := make([]interface{}, 0)
  	for i := 0; i < entriesVal.Len(); i++ {
  		v := reflect.Indirect(entriesVal.Index(i)).Interface()
  
  		value := deepGet(v, key)
  		if test(value) {
  			selection = append(selection, v)
  		}
  	}
  
  	return selection, nil
  }
docs: // Generalized where function