code: func isUnique(fl FieldLevel) bool {
  
  	field := fl.Field()
  	v := reflect.ValueOf(struct{}{})
  
  	switch field.Kind() {
  	case reflect.Slice, reflect.Array:
  		m := reflect.MakeMap(reflect.MapOf(field.Type().Elem(), v.Type()))
  
  		for i := 0; i < field.Len(); i++ {
  			m.SetMapIndex(field.Index(i), v)
  		}
  		return field.Len() == m.Len()
  	case reflect.Map:
  		m := reflect.MakeMap(reflect.MapOf(field.Type().Elem(), v.Type()))
  
  		for _, k := range field.MapKeys() {
  			m.SetMapIndex(field.MapIndex(k), v)
  		}
  		return field.Len() == m.Len()
  	default:
  		panic(fmt.Sprintf("Bad field type %T", field.Interface()))
  	}
  }
docs: // isUnique is the validation function for validating if each array|slice|map value is unique